收听ObservableCollection <inotifypropertychanged> </inotifypropertychanged>中任何项目的PropertyChanged事件

时间:2010-08-16 19:37:29

标签: c# observablecollection inotifypropertychanged

我为ObservableCollection创建了一个包装器集合,它订阅每个PropertyChanged事件并将其重新抛出为自己的事件ItemPropertyChanged。我使用与我所描述的here类似的方法做到了这一点。有没有更好的办法?我错过了另一个已经有这种行为的.NET集合吗?

3 个答案:

答案 0 :(得分:0)

在stackoverflow上已有关于此的帖子。它还提供了一种新的集合类型的快速实现,该类型公开了一个事件以使其发挥作用。

请参阅链接:ObservableCollection that also monitors changes on the elements in collection

答案 1 :(得分:0)

我假设您正在触发此事件以计算聚合。我对这个问题有不同的解决方案。考虑使用Update Controls with linq。您可以使用linq以声明方式描述聚合,Update Controls将跟踪其集合中的依赖关系。每当集合发生更改或任何引用的属性发生更改时,它都会重新评估聚合。

答案 2 :(得分:0)

只需使用System.ComponentModel.BindingList<T>即可。当列表中的任何项目触发INotifyPropertyChanged时,它会触发ListChanged事件。