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
|
{
string
Key {
get
;
set
; }
; }
Sample
Sample()
{
ObservableCollection<IModel> collection =
new
ObservableCollection<IModel>();
void
OnCollectionChanged(
object
sender,NotifyCollectionChangedEventArgs e)
//當新增物件到集合時,做一些初始化
if
(e.Action == NotifyCollectionChangedAction.Add)
foreach
(IModel modle
in
e.NewItems)
22
modle.PropertyChanged += (x,y) =>
//Do Something
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 |
集合的內容已大幅變更。 |
參考資料
-
ObservableCollection<T> 類別
-
INotifyCollectionChanged 介面
-
NotifyCollectionChangedEventArgs 類別
-
NotifyCollectionChangedAction 列舉型別
转载地址:http://www.dotblogs.com.tw/wadehuang36/archive/2010/11/03/observablecollection.aspx
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。