2015-02-05 51 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

相关问题