ObservableCollection引发“ Item []”的PropertyChange的目的是什么?

jyo*_*ung 4 c# wpf

ObservableCollection引发“ Item []”的PropertyChange的目的是什么?

如果我有一个实现INotifyCollectionChanged的类,这是我应该做的事情吗?

WPF控件是否以某种方式使用此“ Item []”的PropertyChange?

dtb*_*dtb 5

ObservableCollection同时实现INotifyCollectionChangedINotifyPropertyChanged

INotifyPropertyChanged用于表示的属性ObservableCollection已更改,例如其元素的数量("Count")或可通过集合的索引器("Item[]")访问的元素。另外,ObservableCollection实现INotifyCollectionChanged指示哪个元素已正确更改以及如何更改的工具。

看看Mono的实现,ObservableCollection看看它到底ObservableCollection能做什么。例如,这是InsertItem方法:

protected override void InsertItem (int index, T item)
{
    CheckReentrancy ();

    base.InsertItem (index, item);

    OnCollectionChanged (new NotifyCollectionChangedEventArgs (
        NotifyCollectionChangedAction.Add, item, index));
    OnPropertyChanged (new PropertyChangedEventArgs ("Count"));
    OnPropertyChanged (new PropertyChangedEventArgs ("Item[]"));
}
Run Code Online (Sandbox Code Playgroud)

如果要实现自己的ObservableCollection类集合类,则似乎是实现INotifyCollectionChanged和的正确方法INotifyPropertyChanged