2012-02-08 8 views
0

これが可能かどうかわかりません。私はそれが正しくMyClassの内のすべての項目が表示されるように、このようなコンボボックス...それは利用可能なオプションをアップロードの後ろにコードで1つのComboBox選択を2つの異なるデータにバインドできますか?

<ComboBox Name="testType" 
      Margin="0,5,0,0" 
      IsTextSearchEnabled="True" 
      DisplayMemberPath="Description" 
      SelectedValue="{Binding MyClass.Id, Mode=TwoWay}" 
      SelectedValuePath="Id"/> 

...

 DataTable testCatList = TestTypeBase.GetAll(); 
     testType.ItemsSource = testCatList.DefaultView; 

を作成しました。ユーザーが選択すると、MyClassのIdフィールドが意図したとおりに更新されます。すばらしいです。

ここに私の問題があります:私のtestCatListには、各行のIdとDescriptionの両方が含まれています。これらのフィールドを両方とも現在のMyClassインスタンスにバインドしたいと思います。だからここに私が試したものです。ここで

<ComboBox Name="testType" 
      Margin="0,5,0,0" 
      IsTextSearchEnabled="True" 
      DisplayMemberPath="Description"> 
    <ComboBox.SelectedValue> 
     <MultiBinding Converter="{???}"> 
      <Binding Path="MyClass.Id" Mode="TwoWay"/> 
      <Binding Path="MyClass.Description" Mode="TwoWay"/> 
     </MultiBinding> 
    </ComboBox.SelectedValue> 
</ComboBox> 

、私はMyClass.Idが選択されたIDと選択した内容に設定MyClass.Descriptionに設定したいのですが。ご覧のとおり、SelectedValuePathを削除しました。なぜなら、Idだけをもう必要としないからです。しかし、コンバータのために何を使うべきかはわかりません(上記の疑問符を参照してください)。

任意のアイデア、StackOverflowのオハイオ州の専門家?ありがとう。

+0

私は片方向コンバータから始めるだけです。コードの背後にコンバーターを作成しましたか?もしあなたが持っているものを投稿してください。 – Paparazzi

+0

いいえ、データは既に正しい形式(DataTable.Id> MyClass.IdおよびDataTable.Description> MyClass.Description)であるため、このためのコンバータは作成していません。コードを使わずに2つのフィールドをバインドする方法があると思いました。 – Jarvis

+0

私が知っているコンバータなしで結合や分割を行う方法はありません。コンバーターの構文は、コンバーターを期待していることを示していませんか?クラスの場合は、コンビネーションであるPropertyを作成して単一の値のように見えるかもしれません。 – Paparazzi

答えて

0

私が正しく理解していれば、SelectedValueの代わりにSelectedItemプロパティを使用してみてください。 このようにして、選択したMyClassインスタンスを取得します。もちろん、すべてのプロパティを取得します。

SelectedItem="{Binding CurrentSelectedMyClassItem}" 
+0

はい、その中からの価値だけでなく、選択したアイテム全体が必要になることは間違いありません - ありがとう!しかし、私はまだ私のMultiBindingでMyClassの2つ(多くの)フィールドに値を設定するために使用するコンバータの値に固執しています。 – Jarvis

関連する問題