ObservableCollection
实施INotifyCollectionChanged
和INotifyPropertyChanged
。在ObservableCollection上实现INotifyPropertyChanged的目的是什么?
我明白,添加, 缺失(+清晰),和项目的更换 通过收集的事件
CollectionChanged
都通知到消费者 ,并且,在现有项目的更新 可 使用项目'事件PropertyChanged
监控,如果他们自己实施 自己INotifyPropertyChanged
。我从别人看,你不能对集合的事件
PropertyChanged
寄存器,因为它是 只读。
那么,什么是它的目的,我们可以做什么利用它?
这里和那里的评论似乎让这个讨论感到困惑暗示ObservableCollection
的神奇是实现两个接口,允许通知收集和项目内容的变化,虽然这是不正确的(这被忽略很多例子,其中集合绑定到一个列表框,在项目内容改变后神奇地更新,表明集合通知列表框)。
实际上它似乎收集的唯一优势是实施INotifyCollectionChanged
。使用ObservableCollection
处理项目属性更改似乎比其他集合更容易:只有当项目实现INotifyPropertyChanged
时,才可能执行这些项目属性更改,而这些项目不可以这样做,并且用户设法独立于集合挂钩此事件。
这是正确的吗?
尽管事实上准确和简洁,我不知道这是如何回答“这是什么目的?” Q – Andrew 2009-12-20 19:50:26
的一部分目的是通知订户集合已更改。在这方面,它与CollectionChanged事件具有相同的用途,但INotifyPropertyChanged比INotifyCollectionChanged – 2009-12-20 20:41:11
更受支持,例如在某些情况下绑定到集合的计数。 – dan 2009-12-21 06:28:39