【问题标题】:Listbox and ObservableCollection, repopulatingListbox 和 ObservableCollection,重新填充
【发布时间】:2013-02-28 06:41:54
【问题描述】:

我有两个列表框,两个列表框的项目来源都是“元素”类型的 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 中的所有元素,它也不起作用。

有什么想法吗?

【问题讨论】:

    标签: windows-phone-7 listbox observablecollection


    【解决方案1】:

    您不能将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-06-11
    • 1970-01-01
    • 2011-10-29
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多