https://blog.csdn.net/GongchuangSu/article/details/48832721
https://blog.csdn.net/hyman_c/article/details/50899321
聊作總結。
ObservableCollection< T >類表示一個動態數據集合,在添加項、移除項或刷新整個列表時,此集合將提供通知。
命名空間: System.Collections.ObjectModel
程序集:System.ObjectModel(在 System.ObjectModel.dll 中)
類型參數 T:集合中的元素類型
一、構造函數
- ObservableCollection< T >():初始化 ObservableCollection< T > 類的新實例。
- ObservableCollection< T >(IEnumerable< T >):初始化 ObservableCollection< T > 類的新實例,該類包含從指定集合中復制的元素。
- ObservableCollection< T >(List< T >):初始化 ObservableCollection< T > 類的新實例,該類包含從指定列表中復制的元素。
二、屬性
- Count:獲取 Collection< T > 中實際包含的元素數。
- Item:獲取或設置位於指定索引處的元素。
- 其它···
三、方法
- Add:將對象添加到 Collection< T > 的結尾處。
- Clear:從 Collection< T > 中移除所有元素。
- Contains:確定某元素是否在 Collection< T > 中。
- IndexOf:搜索指定的對象,並返回整個 Collection 中第一個匹配項的從零開始的索引。
- Insert:將元素插入 Collection< T > 的指定索引處。
- Remove:從 Collection 中移除特定對象的第一個匹配項。
- RemoveAt:移除 Collection 的指定索引處的元素。
- ToString:返回表示當前對象的字符串。
- 其它···
四、事件
CollectionChanged:在添加、移除、更改或移動項或者在刷新整個列表時發生。
五、說明
在許多情況下,所使用的數據是對象的集合。 例如,數據綁定中的一個常見方案是使用 ItemsControl(如 ListBox、ListView 或 TreeView)來顯示記錄的集合。ObservableCollection<T>就是一個主要用在WPF的控件和數據源的綁定中的集合,例如,
在xmal文件中,放置一個ListBox控件,名字叫做UserGroupListBox,ItemsSource設置如下:
<ListBox Name="UserGroupListBox" ItemsSource="{Binding Path=string,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" Height="214" HorizontalAlignment="Left" Margin="6,64,0,0" VerticalAlignment="Top" Width="173" Loaded="UserGroupListBox_Loaded" SelectionChanged="UserGroupListBox_SelectionChanged" />
對應的cs文件中:
ObservableCollection<string> strlist=new ObservableCollection<string>();
....
UserGroupListBox.ItemsSource=strlist;
這里用ObservableCollection<T>,當strlist發生變化時,UserGroupListBox的界面也會實時更新,而是用List<T>等其他容器是就沒有這種效果。
可以枚舉實現 IEnumerable 接口的任何集合。 但是,若要設置動態綁定,以便集合中的插入或刪除操作可以自動更新 UI,則該集合必須實現 INotifyCollectionChanged 接口。 此接口公開 CollectionChanged 事件,只要基礎集合發生更改,都應該引發該事件。
WPF 提供 ObservableCollection 類,它是實現 INotifyCollectionChanged 接口的數據集合的內置實現。
為了完全支持將綁定源對象中的數據值傳送到綁定目標,在支持可綁定屬性的集合中的每個對象都必須實現適當的屬性更改通知機制,如 INotifyPropertyChanged 接口。