C# 收听ObservableCollection中任何项目的PropertyChanged事件<;INotifyPropertyChanged>;

C# 收听ObservableCollection中任何项目的PropertyChanged事件<;INotifyPropertyChanged>;,c#,observablecollection,inotifypropertychanged,C#,Observablecollection,Inotifypropertychanged,我已经为ObservableCollection创建了一个包装器集合,它订阅了每个items PropertyChanged事件,并将其作为自己的事件ItemPropertyChanged重新提交。我使用了与我描述的类似的方法。有更好的办法吗?我是否缺少另一个已具有这种行为的.NET集合 我假设您触发此事件是为了计算聚合。我对这个问题有不同的解决办法。考虑使用。您可以使用linq声明性地描述聚合,更新控件将跟踪其在集合中的依赖关系。每当集合发生更改,或引用的任何属性发生更改时,它都将重新评估聚合

我已经为ObservableCollection创建了一个包装器集合,它订阅了每个items PropertyChanged事件,并将其作为自己的事件ItemPropertyChanged重新提交。我使用了与我描述的类似的方法。有更好的办法吗?我是否缺少另一个已具有这种行为的.NET集合

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

只需使用即可。当列表中的任何项目触发时,它所拥有的事件将触发它的
INotifyPropertyChanged

,例如,在构建一个非常大的集合时,它看起来可能非常昂贵。我希望有更好的选择。我没有见过。创建自己的事件而不是使用标准的INotifyPropertyChanged/ICollectionChanged接口的目的是什么?@Goblin:新事件包括更改的名称项属性。在现有事件中无法正确传达。collections PropertyChanged事件的使用者希望该名称是collections属性之一。@chilltemp:我想问的是,为什么集合的使用者想知道项目更新?我无法理解在现有通知策略中添加第二个事件处理例程的原因。在我看来,它充满了不必要的复杂性。ObservableCollection的使用者可以监听已经存在的项的属性更新(这就是WPF中的ItemsControl已经在开箱即用地执行的操作)。