ObservableCollection類介紹

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

NOTE:

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

 

範例

01public interface IModel : INotifyPropertyChanged
02{
03    string Key { get; set; }
04    string Value { get; set; }
05}
06 
07public 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值