ObservableCollection引發PropertyChange爲「Item []」的目的是什麼?ObservableCollection引發「Item []」的PropertyChange的目的是什麼?
這是我應該做的事情,如果我有一個類實現INotifyCollectionChanged?
WPF控件是否以某種方式使用此ItemChange的「Item []」?
ObservableCollection引發PropertyChange爲「Item []」的目的是什麼?ObservableCollection引發「Item []」的PropertyChange的目的是什麼?
這是我應該做的事情,如果我有一個類實現INotifyCollectionChanged?
WPF控件是否以某種方式使用此ItemChange的「Item []」?
ObservableCollection
實施INotifyCollectionChanged
和INotifyPropertyChanged
。
INotifyPropertyChanged
用於指示ObservableCollection
的屬性發生變化時,如它的元素("Count"
),或通過該集合的索引("Item[]"
)可訪問的元素的數量。另外,ObservableCollection
實現INotifyCollectionChanged
以指示哪個元素已經完全改變以及如何改變。
看看Mono implementation of 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[]"));
}
如果你想實現自己的ObservableCollection
般的集合類,它似乎同時實現INotifyCollectionChanged
和INotifyPropertyChanged
的正確方法。
是的WPF和Silverlight控件使用PropertyChange事件來更新UI控件。這允許像ListView或DataGrid的東西自動更新,以響應綁定的ObservableCollection或實現INotifyCollectionChanged的其他集合的更改。
編輯:就實現而言,通常不需要實現自己的集合,因此不需要關於INotifyCollectionChanged的問題。對於將在ObservableCollection中使用的類,您需要實現INotifyPropertyChanged。這允許您的對象在更新時觸發PropertyChanged事件,這將允許您的UI控件自動顯示更改。
我很困惑。你說WPF使用'PropertyChange'Item []「',但我應該實現'CollectionChanged'。 – jyoung 2009-04-07 23:35:32