C#編程(五十六)----------可觀察的集合ObservableCollection


原文鏈接: http://blog.csdn.net/shanyongxu/article/details/47080685

 

可觀察的集合

如果需要集合中的元素核實刪除或添加的信息,就可以使用ObservableCollection<T>.

 

ObservableCollection<T>類表示一個動態數據集合,在添加項,移除項或刷新整個列表時,刺激和將提供通知.

 

命名空間:System.Collections.ObjectModle

語法:public class ObservableCollection<T>:Collection<T>,INotifyCollectionChanged,INotifyPropertyChanged

 

在許多情況下,所使用的數據是對象的集合.例如,數據綁定中的一個常見方案是使用ItemsControl(ListBox,ListViewTreeView)來顯示記錄的集合.

 

可以枚舉實現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接口.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM