2013-02-28 83 views
-1

我有兩個列表框,兩個列表框項目源型「元」的ObservableCollections,這取決於在ListBox1中選擇元素,我想表明它是subElements屬性在listbox2列表框和的ObservableCollection,重新填充

這裏的一部分代碼:

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

您不能用另一個ObservableCollection實例替換source2,因爲綁定引用丟失。您應該使用屬性的字段或只是添加到集合中的所有元素,而不是替換參考:請教

private void Listbox1_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var items = ((Element)sender).subElements; 
    source.Clear(); 
    foreach(var i in items) 
      source2.Add(i); 
} 
+0

嘿嘿,謝謝,但似乎仍然沒有工作......應此代碼的工作?我在做別的事嗎?再次感謝! – user2107356 2013-02-28 07:49:36