微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ObservableCollection類介紹

System.Collections.ObjectModel.ObservableCollection不是什麼新鮮的東西,早在幾年前,就存在Silverlight與WPF中,它跟一般的Collection最大的不同地方在,它可以被監控,當集合有所變動,會產生事件,可以控制變化,如UI亓件需要監控集合,當變動時UI必需有所調整,或新增資料到集合中,要做一些初始化的動作等等。

NOTE:

在3.0中ObservableCollection建置在WindowsBase.dll中,不過我想沒人有寫個Web AP,為了一個類別而加入WPF的基本組件吧,不過在4.0中ObservableCollection已經被移到System.dll了,不管在什麼類型的專案都可以使用。

 

範例

01 public interface IModel : INotifyPropertyChanged
02 {
03     string Key { get; set; }
04 Value { ; }
05 }
06  
07 class Sample
08 09 public Sample()
10     {
11         ObservableCollection<IModel> collection = new ObservableCollection<IModel>();
12 collection.CollectionChanged += OnCollectionChanged;
13 }
14 15 private void OnCollectionChanged(object sender,NotifyCollectionChangedEventArgs e)
16 17         //當新增物件到集合時,做一些初始化
18         if (e.Action == NotifyCollectionChangedAction.Add)
19 {
20             foreach (IModel modle in e.NewItems)
21             22                 modle.PropertyChanged += (x,y) =>
23 24                     //Do Something
25 };
26 }
27 28 29 }

 

NotifyCollectionChangedEventArgs說明

屬性

說明

Action

取得造成事件的動作。

NewItems

取得變更所涉及的新項目清單。

NewStartingIndex

取得發生變更的索引,預設值為-1,如collection.Insert(5,obj),NewStartingIndex值為是5。

OldItems

取得受 Replace、Remove 或 Move 動作影響的項目清單。

OldStartingIndex

取得發生 Move、Remove 或 Replace 動作的索引,預設值為-1,如collection.RemoveAt(5,obj),OldStartingIndex值為是5。

 

Action種類

成員名稱

說明

Add

集合中已加入一個或多個項目。

Remove

集合中已移除一個或多個項目。

Replace

集合中已取代一個或多個項目。

Move

集合中已移動一個或多個項目。

Reset

集合的內容已大幅變更。

 

參考資料

转载地址:http://www.dotblogs.com.tw/wadehuang36/archive/2010/11/03/observablecollection.aspx

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐