-1

私は2つのリストボックスを持っています。両方のリストボックスのアイテムソースは、リストボックス1で選択された要素に応じて、タイプ「要素」のObservableCollectionです。リストボックス2のサブ要素を表示したい

ここにコードの一部があります:

ObservableCollection< Element> source1 = new ObservableCollection< Element>();
ObservableCollection< Element> source2 = new ObservableCollection< Element>();

Listbox2.ItemsSource = source2; 

public class Element 
 {
     public string Name { get; set; }
     public ObservableCollection< Element> subElements { get; set; }
 }


private void Listbox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     var items = ((Element)sender).subElements;
     source2 = items;
     // i tried many variants, it never works to (re)populate Listbox2
 }

新しい要素で埋めようとする前に source2 からすべての要素をクリアしても、うまくいきません。

何か案は?

4

1 に答える 1

0

バインディング参照が失われるため、source2の別のインスタンスに置き換えることはできません。ObservableCollectionフィールドの代わりにプロパティを使用するか、参照を置き換える代わりにすべての要素をコレクションに追加する必要があります。

private void Listbox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     var items = ((Element)sender).subElements;
     source.Clear();
     foreach(var i in items)
          source2.Add(i);
 }
于 2013-02-28T06:47:30.183 に答える