ObservableCollection
实现了INotifyCollectionChanged
和INotifyPropertyChanged
两个接口。
我明白添加、删除(+清空)和替换项可以通过集合的事件
CollectionChanged
通知消费者,而现有项中的更新可以使用INotifyPropertyChanged
自己实现的项的事件PropertyChanged
来监视。据我所知,你不能在集合的只读事件
PropertyChanged
上注册。
那么它的目的是什么,我们可以利用它做什么呢?
这里和那里的评论似乎让讨论变得混乱,暗示ObservableCollection
的神奇之处在于实现了两个接口,允许同时通知集合和项内容的更改,但事实并非如此(很多示例都忽略了这一点,其中集合绑定到列表框后,当项内容更改时会自动更新,表明集合通知了列表框)。
实际上,似乎唯一的优势是实现了INotifyCollectionChanged
。处理项属性更改似乎与其他集合一样困难:ObservableCollection
只有在项实现INotifyPropertyChanged
时才能实现,而它们可能没有这样做,并且如果用户设法独立于集合挂接到此事件,则可以实现。
这是正确的吗?