ObservableCollection
实现INotifyCollectionChanged
和INotifyPropertyChanged
。
我知道添加、删除(+清除)和替换项目是通过集合的事件 通知消费者的
CollectionChanged
,并且如果现有项目的更新可以使用项目的事件 来监控PropertyChanged
它们自己实现INotifyPropertyChanged
。我从其他人那里了解到,您无法注册该集合的事件
PropertyChanged
,因为它是只读的。
那么它的目的是什么,我们可以利用它做什么呢?
这里和那里的评论似乎使讨论变得混乱,暗示 的魔法ObservableCollection
是实现两个接口,允许通知集合和项目内容更改,虽然这是不正确的(这被许多示例忽略了集合绑定到一个列表框,该列表框在项目内容更改后会神奇地更新,建议集合通知列表框)。
实际上,集合的唯一优势似乎就是执行INotifyCollectionChanged
。处理项目属性更改似乎并不ObservableCollection
比使用另一个集合更容易:只有当项目实现INotifyPropertyChanged
时才有可能,他们可能不会这样做,并且如果用户设法独立于集合来挂钩此事件。
这个对吗?