2015-02-05 92 views
0

我有一個ObservableCollection,我想在集合更改時做些事情。是否可以訂閱ObservableCollection上的CollectionChanged事件?

private ObservableCollection<myType> _oc = new ObservableCollection<myType>(); 

public MyConstructor() 
{ 
    _oc.CollectionChanged += myEventHandler(); 
} 

private System.Collections.Specialized.NotifyCollectionChangedEventHandler myEventHandler() 
{ 
    //myCode 
} 

但myEventHandler中的代碼沒有執行。

我該怎麼做?

非常感謝。

+1

是的,這應該工作。你怎麼知道收藏改變了? – BradleyDotNET 2015-02-05 18:22:50

+0

你的意思是'myEventHandler'不能執行? – Patrick 2015-02-05 18:23:03

+1

你實際上是從集合中添加/刪除元素,而不僅僅是改變已有元素的屬性,對吧?乍看之下,除非您從該方法返回值,否則它甚至不會編譯。這不是將處理程序附加到方法的常用方法...嘗試Laurent答案中的代碼。 – 2015-02-05 18:24:15

回答

3

您的處理程序的簽名似乎關閉。你可以嘗試這樣的事情:

private ObservableCollection<myType> _oc = new ObservableCollection<myType>(); 

public MyConstructor() 
{ 
    _oc.CollectionChanged += CollectionChanged; 
} 

private void CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 
{ 
    //myCode 
} 

而且很明顯地增加了一些東西到集合,所以你可以測試事件。

_oc.Add(new myType()); 
+0

非常感謝。 – 2015-02-05 18:54:57

相關問題