標籤:c#
可觀察的集合
如果需要集合中的元素核實刪除或添加的資訊,就可以使用ObservableCollection<T>類.
ObservableCollection<T>類表示一個動態資料集合,在添加項,移除項或重新整理整個列表時,刺激和將提供通知.
命名空間:System.Collections.ObjectModle
文法:public class ObservableCollection<T>:Collection<T>,INotifyCollectionChanged,INotifyPropertyChanged
在許多情況下,所使用的資料是對象的集合.例如,資料繫結中的一個常見方案是使用ItemsControl(如ListBox,ListView或TreeView)來顯示記錄的集合.
可以枚舉實現IEnumerable介面的任何集合.但是若要設定動態綁定,以使集合中的插入或刪除操作可以自動更新UI,則該集合必須實現INotifyCollectionChanged介面.此介面公開CollectionChanged事件,只要基礎集合發生更改,都應該引發該事件.
WPF提供ObservableCollection<T>類,它是實現INotifyCollectionChanged介面的資料集合的內建實現.在實現自己的集合之前,請先考慮ObservableCollection<T>或一個現有的集合類,如List<T>,collection<T>和BindingList<T>等.如果有進階方案並且希望實現自己的集合,請考慮使用IList,它提供可以通過索引朱哥訪問的對象的非泛型集合.如果實現IList,則將使用資料繫結引擎提供最佳效能.
ObservableCollection的缺點:
當集合中的屬性中改變是2沒有提供任何的通知機制.在陳旭啟動並執行過程中,通過新增,傷處或者改變ObservableCollection集合中的資料時,只有新增和刪除資料時,UI集合中的資料才改變.但是在修改集合中已經存在的資料時UI層的資料卻不能改變.
這裡不得不說明一下INotifyPropertyChanged,他不是一個集合,只是一個介面.在類中提供一個事件PropertyChanged,當屬性的值發生改變時通知用戶端.如果對象的狀態發生改變時(新增,修改,刪除)將處罰書劍PropertyChanged只想那些已經發生改變的集合.
ObservableCollection能通知它變化了也正是因為他事先了INotifyPropertyChanged介面.只是微軟給出了具體的實現,如果要寫List需要自己實現INotifyPropertyChanged介面.
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
C#進階編程五十六天----可觀察的集合ObservableCollection