Listbox和ObservableCollection,重新填充

时间:2013-02-28 06:41:54

标签: windows-phone-7 listbox observablecollection

我有两个列表框,两个列表框的项目源都是“Element”类型的ObservableCollections,具体取决于listbox1中的选定元素,我想在listbox2中显示它的子元素

这是代码的一部分:

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中的所有元素,它也无法正常工作。

任何想法?

1 个答案:

答案 0 :(得分: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);
 }