C#進階編程五十六天----可觀察的集合ObservableCollection

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.