C#高级编程五十六天----可观察的集合ObservableCollection
2015-07-27 10:03
225 查看
可观察的集合
如果需要集合中的元素核实删除或添加的信息,就可以使用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接口.
如果需要集合中的元素核实删除或添加的信息,就可以使用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# NET DataTable转Excel 并 下载
- .Net常见问题之C#中的委托
- 两小时搞定C#版超级战舰游戏
- 文本文件打印类库(C#)
- c# mvc flash上传
- C# 对于时间的相关问题
- C# 桌面创建快捷键方式
- 【C#】WaitHandle、EventWaitHandle、ManualResetEvent和AutoResetEvent线程同步类
- C#高级编程五十五天----HashSet和SortedSet
- C# 抽象类和接口的区别
- C#高级编程五十四天----Lookup类和有序字典
- C# 3.0 特性之扩展方法
- C#开源系统大汇总
- c#socket编程基础
- C# Math类简介
- c#利用regex获取字符串中汉字的个数
- c#利用regex获取字符串中汉字的个数
- C# Winform应用程序占用内存较大解决方法整理(转)
- 用 C# 轻松读取、改变文件的创建、修改、访问时间
- 【C#】26. Enigma 模拟器