2011-01-23 23 views
0

wpf-mvvmアプリケーションに編集可能なコンボボックスがあります。編集可能なコンボボックスでテキストボックスに枠線を追加するにはどうすればいいですか?

編集可能なコンボボックスのテキストボックスに枠線を追加したいと思います。 (このボーダーは赤で表示されますが、ユーザーがコンボボックスに無効な項目を入力した場合)

助けてください。

<ComboBox ItemsSource="{Binding Path = ContractNumberList }" Width="90" IsEditable="True" SelectedItem="{Binding Path = ContractNumber,Mode=TwoWay}" 
Text="{Binding Path = ContractNumber, UpdateSourceTrigger=LostFocus}"> 
</ComboBox> 

EDIT: 私は必要なものは、私の編集可能なコンボボックスの項目テンプレートを上書きすることです。私は、編集可能なコンボボックスには、2つの項目があることを知っている=>テキストボックスとリスト。このテキストボックスに罫線を追加する必要があります。

答えて

1

あなたは可能性がある使用する必要がありますこれに対してValidationRulesを使用しますが、有効性をチェックするためにContractNumberListに渡す必要があるため、かなり難しいと思います。より簡単な方法は、IDataErrorInfoを実装するViewModelを作成し、TextのバインディングにValidatesOnDataErrors="True"を設定してから、ViewModelから有効性チェックを行います。それは私が入力したデータが無効である..when私の検証は私がコンボ-テキストボックスで外赤色を表示する必要がrules..But必要があり、この

<ComboBox ItemsSource="{Binding Path=ContractNumberList}" 
      Width="90" 
      IsEditable="True" 
      SelectedItem="{Binding Path=ContractNumber, 
           Mode=TwoWay}" 
      Text="{Binding Path=ContractNumber, 
         UpdateSourceTrigger=LostFocus, 
         ValidatesOnDataErrors=True}"/> 

ビューモデル

public class YourViewModel : IDataErrorInfo 
{ 
    // ... 
    public string ContractNumber 
    { 
     get; 
     set; 
    } 
    // etc. 

    #region IDataErrorInfo Members 

    public string Error 
    { 
     get { throw new NotImplementedException(); } 
    } 

    public string this[string columnName] 
    { 
     get 
     { 
      string returnValue = string.Empty; 
      if (columnName == "ContractNumber") 
      { 
       if (ContractNumberList.IndexOf(ContractNumber) < 0) 
       { 
        returnValue = "Invalid selection"; 
       } 
      } 
      return returnValue; 
     } 
    } 

    #endregion 
} 
+0

@Anish Mohan:このソリューションは、リストにない値を入力するときにTextBoxの周りに赤い枠線を配置します。あなたはまだテンプレートソリューションを望んでいますか? –

関連する問題