【发布时间】:2012-08-08 19:24:47
【问题描述】:
我在ObservableCollection<T> 中使用反编译器四处查看,看到了一些我以前从未见过的奇怪的OnPropertyChanged 代码。
public class ObservableCollection<T> : Collection<T>, INotifyCollectionChanged, INotifyPropertyChanged
{
private const string IndexerName = "Item[]";
protected override void ClearItems()
{
...
base.OnPropertyChanged("Count");
base.OnPropertyChanged("Item[]");
...
}
}
OnPropertyChanged("Item[]") 调用有什么作用?在编写我自己的代码时这对我有什么帮助?
它必须做一些不同于标准 OnPropertyChanged 调用的事情,因为“Item”不是对象上的属性,而“[]”肯定不是“任何”属性名称的一部分。
【问题讨论】:
-
我很确定它会通知绑定到集合的任何项目已更改。
-
@mydogisbox 如果您指的是检测添加/删除的项目,则由 INotifyCollectionChanged 及其 CollectionChanged 事件处理。如果您指的是检测集合中某个项目的属性更改,则超出了 ObservableCollection 的范围。
标签: .net wpf observablecollection inotifypropertychanged