2017-07-20 46 views
-1

ListBoxとDataGridがあり、ListBoxにはDataGridのリストのサブセットが表示されます。コントロールの別々にバインドされている2つのリストを作成しましたが、両方のコントロールのSelectedItemはビューモデルの同じプロパティにバインドされています。 ListBoxのサブセットにないアイテム(ユーザーがListBoxに何も選択してはならない)でDataGridをクリックしない限り、コントロールのアイテムをクリックしたときに、両方のコントロールで同じアイテムを選択する必要があります。2つのコントロールが同じプロパティにバインドされています。WPF

リストは別々に作成されているので推測しています。同じオブジェクトではないので、コントロールにある種の比較ロジックを用意して、同じ名前(または値基準の種類)?それが存在しない場合は、スーパーセット内の全く同じオブジェクトからオブジェクトのサブセットリストを作成するのが最善の方法だと思います。

+1

両方のリストに同じオブジェクトへの参照が含まれる場合があります。それができない場合は、要素型の 'Equals'メソッドをオーバーライドします。しかし[備考](https://msdn.microsoft.com/en-us/library/bsc2ak47.aspx)を読んでください。 – Clemens

答えて

0

私はリストが作成されたので、別に彼らは同じオブジェクト

ではありませんあなたは二つの異なるコレクション、例えば非常に同じオブジェクトを追加することができます推測している:

YourType obj = new YourType(); 
list1.Add(obj); 
list2.Add(obj); 

このあなたの問題を解決するはずです。

YourTypeのメソッドをYourTypeにオーバーライドすることもできますが、両方のコレクションが同じオブジェクトを参照する必要はありません。第2のコレクションは最初のサブセットであるため、同じオブジェクトを参照する必要はありません。

+0

データセットのアイテムを選択していないサブセットからアイテムを選択したときに問題が発生していますが、スーパーセットとまったく同じオブジェクトからサブセットリストを作成するだけでした。しかし、逆もうまくいきます...私はさらに 'UpdateSourceTrigger = PropertyChanged、Mode = TwoWay'を持っていますので、後でこのタスクに戻り、問題を解明しようとします。 – m4gik

関連する問題