wpf*_*wpf 8 wpf observablecollection inotifypropertychanged
ObservableCollection实现INotifyCollectionChanged和INotifyPropertyChanged.
我了解通过集合的事件
可以向消费者通知添加,删除(+清除)和项目替换CollectionChanged,并且如果项目PropertyChanged实现自己,则可以使用项目事件
监视现有项目中的更新INotifyPropertyChanged.
我从别人那里读到你不能在集合的事件上注册,
PropertyChanged因为它是readonly.
那么它的目的是什么,我们可以利用它做什么?
这里和那里的评论似乎让讨论变得混乱,暗示着ObservableCollection实现两个接口的神奇之处在于允许同时收集集合和项目内容更改,而这是不正确的(许多示例都忽略了这一点)绑定到一个列表框,在项目内容更改后神奇地更新,建议集合通知列表框).
实际上,这个系列的唯一优势似乎是实现INotifyCollectionChanged.ObservableCollection与其他集合相比,处理项目属性更改似乎并不容易:只有当项目实现时INotifyPropertyChanged,它们可能不会执行,并且如果用户设法独立于集合挂钩此事件,则可能.
它是否正确?
如果您ObservableCollection<T>使用Reflector 查看源代码,您可以看到此事件是针对两个属性引发的:
this.OnPropertyChanged("Count");
this.OnPropertyChanged("Item[]");
Run Code Online (Sandbox Code Playgroud)
请注意,显式ObservableCollection<T>实现INotifyPropertyChanged,因此您PropertyChanged只能通过INotifyPropertyChanged变量访问事件:
INotifyPropertyChanged inpc = myObservableCollection;
inpc.PropertyChanged += myEventHandler;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1962 次 |
| 最近记录: |