-1

我有两个列表框,两个列表框的项目源都是“元素”类型的 ObservableCollections,具体取决于列表框 1 中的选定元素,我想在列表框 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 回答