C#编程(五十六)----------可观察的集合ObservableCollection

原文链接: http://blog.csdn.net/shanyongxu/article/details/47080685

可观察的集合

如果需要集合中的元素核实删除或添加的信息,就可以使用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接口.

时间: 2024-08-07 04:33:05

C#编程(五十六)----------可观察的集合ObservableCollection的相关文章

C#高级编程五十六天----可观察的集合ObservableCollection

可观察的集合 如果需要集合中的元素核实删除或添加的信息,就可以使用ObservableCollection<T>类. ObservableCollection<T>类表示一个动态数据集合,在添加项,移除项或刷新整个列表时,刺激和将提供通知. 命名空间:System.Collections.ObjectModle 语法:public class ObservableCollection<T>:Collection<T>,INotifyCollectionCha

第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点

第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲-scrapy分布式爬虫要点 1.分布式爬虫原理 2.分布式爬虫优点 3.分布式爬虫需要解决的问题

可观察的集合---ObservableCollection&lt;T&gt;

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections.ObjectModel; namespace ConsoleApplication2 {     class Program     {         static void Main(string[] args)

ActionScript3游戏中的图像编程(连载五十六,第3章完)

总目录:http://blog.csdn.net/iloveas2014/article/details/38304477 3.2.7 用冲破极限的数字打造图形纹理 Flash滤镜的参数虽然简单,但它们从各种几何规则的约束中解放了出来,比如模糊X可以不等于模糊Y,参数能容纳很大的数值,斜角的距离不再受大小的制约(当然Photoshop的阴影滤镜也如此),内外效果可以并存,等等,使Flash的滤镜返璞归真,重获自由,开发员和设计师都可随性地发挥个人的创造力,让艺术编程界百葩齐放. 图 3.95 简

Java编程思想(十六) —— 联系JVM再谈Class

编程思想这个专栏停了好久了,主要是把精力放在了其他知识上,现在继续补上. 前面两篇写到RTTI和简单的反射介绍,先回顾一下: RTTI,运行时类型信息,多态的应用,类型转换其实是发生在运行期间. Class对象: 编程思想讲到的定义,Java使用Class对象来执行其RTTI,类是程序的一部分,每个类都有一个Class对象,其实每编写和编译一个新类,就会产生一个Class对象,其实这个对象时被保存在同名的.class文件中的.生成这个类对象,其实是JVM(Java虚拟机)使用了"类加载器&quo

C#高级编程五十四天----Lookup类和有序字典

Lookup类 Dictionary<Tkey,TValue>只为每个键支持一个值.新类Lookup<Tkey,TValue>是.NET3.5中新增的,它类似与Dictionary<Tkey,TElement>,但把键映射带一个值集上.这个类在程序及System.Core中实现,用System,Linq命名空间定义. Lookup<Tkey,TElement>的方法和属性如下表: 属性名或者方法名 说明 Count 属性Count返回集合中的元素个数 Ite

【读书笔记】C#高级编程 第十六章 错误和异常

(一)简介 错误的出现并不总是编写应用程序的人的原因,有时应用程序会因为应用程序的最终用户引发或运行代码的环境而发生错误.C#提供了异常处理机制来处理错误. (二)异常类 在C#中,但刚出现某个特殊的异常错误条件时,就会创建(或抛出)一个异常对象.一般情况下异常没有特定的名称空间,异常类应放在生成异常的类所在的名称空间. (三)捕获异常 .NET Framework提供了大量的预定义基类异常对象.为了在C#代码中处理可能的错误情况,一般要把程序的相关部分分成3种不同类型的代码块. try块包含的

猫猫学iOS(五十六)网络基础以及如何搭建服务器

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 一:为什么要学习网络编程 关于这个问题,为什么要学习网络编程,猫猫的理解就是,这东西是时代发展的必要,没什么为什么,就是应该学,除非你就是想玩单机,但是就算是单机也会有购买金币之类的网络需求,简单来说,有了网络,让你不再是一个人在战斗. 网络编程是一种实时更新应用数据的常用手段 . 网络编程是开发优秀网络应用的前提和基础. 总

一个屌丝程序猿的人生(五十六)

"蓟门桥西到了.请乘客有序上下车,下车请刷卡." 随着公交车上报音员的声音响起,公交车缓缓的停了下来. 林萧从公交车上下来,便直奔宿舍而去.方才在培训机构,林萧第一个离开了教室,这倒不是他自恃项目已经写完了,对张建接下来要讲的没有兴趣. 而是他已经想好了,该如何在这次项目中,达到一鸣惊人的效果,以至于他迫不及待的便离开了. 至于林萧想到的办法,简单的来说,就是两个字--质量. 其实林萧完全赶得上张建的学习速度,甚至可以比张建更快,之所以林萧在速度上落后了,实际上是由于他研究了很多,教学