我有两个列表框,两个列表框的项目源都是“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中的所有元素,它也无法正常工作。
任何想法?
答案 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);
}