【问题标题】:CollectionChanged event of ObservableCollectionObservableCollection 的 CollectionChanged 事件
【发布时间】:2013-01-12 05:47:28
【问题描述】:
我有一个 ObservableCollection,这个集合有 2 个项目(模型),模型有 Value 作为属性。
集合有一个事件 CollectionChanged,它假设在更改项目时触发,所以我希望看到这个事件在模型值设置时触发,但我不知道应该如何构建模型来触发它事件?
我知道 Model 可以有一个事件,并且当添加一个 Model 时,可以为该事件分配一个处理程序,但我想知道 CollectionChanged 如何用于更改集合中的项目?
【问题讨论】:
标签:
wpf
observablecollection
【解决方案1】:
CollectionChanged 只会在模型替换您收藏中的另一个模型时引发。对已经在集合中的模型的属性更改不会引发它。
您将需要使用您的模型必须公开的INotifyPropertyChanged.PropertyChanged 事件来处理这些事件。
【解决方案2】:
如果元素中的属性发生更改,它不会触发,只有在您将新的“模型”项分配给集合的索引时才会触发。
如果您希望 WPF 在您更改模型类中的属性值时更新,您需要使模型实例实现 INotifyPropertyChanged。
【解决方案3】:
一个技巧是向集合中添加一个新元素并立即将其删除。这将引发 collectionchanged 事件。