在WPF中绑定一个集合的时候,比如:DataGrid.ItemsSource = new List<T>(); 这样的操作,会存在当数据行新增或者删除的时候不会得到及时的通知来刷新界面,而需要重新绑定DataGrid.ItemsSource = null; 再次重新绑定来实现。这样的工作效率比较低,另外使用起来也比较麻烦(在MVVM设计模式中)比较明显。

换句话说也就是 List<T> 的数据绑定不支持修改通知(INotifyPropertyChanged),所以有了另外的一个集合对象 ObservableCollection<T> 来实现双向通知的功能,使用起来是差不多的。该对象存在于:System.Collections.ObjectModel 命名空间下。下面对两者做一些简单介绍:

1.List<T>的简单介绍:

List<T>代表的是强类型的Ojbect集合,可以通过索引访问并且提供了查找、排序以及操作此集合的方法。List基本上和ArrayList相同,它用数组的方式实现了接口IList并且他的大小可以根据需要来自动增加。

List<T>的缺点

在使用ASP.NET开发时,我们简单的使用DataSource和DataBind来绑定数据,但是在SilverLight中就没有那么简单了。在ASP.NET中,绑定操作只是单向的。绑定操作一旦完成如果再想改变值的话,你必须得弹出一个已经赋值需要修改的对话框或者直接在表单上修改,最后再调用方法DataBind,这样的操作特别的麻烦。

2.ObservableCollection的介绍:

ObservableCollection是动态数据集合并且当集合中新增、修改或者删除项目时,或者集合被刷新时,都有通知机制(通过实现接口INotifyCollectionChanged)。

ObservableCollection的缺点

当集合中的属性中改变时没有提供任何的通知机制。在程序运行的过程中,通过新增、删除或者改变ObservableCollection集合中的数据时,只有新增和删除数据时,UI集合(DataGrid)中的数据才改变。但是在修改集合中已经存在的数据时UI层的数据却不能改变。

参考: http://www.wxzzz.com/?id=135

最新文章

  1. oracle表分区详解(按天、按月、按年等)
  2. 使用 JavaScript 实现基本队列、优先队列和循环队列
  3. bash广播
  4. HTML5自学笔记[ 15 ]canvas绘图基础6
  5. C++指针详解(二)
  6. 在dom4j中使用XPath
  7. Java时间戳与日期格式字符串的互转
  8. Android apk 的安装过程
  9. apache启动报错(98)Address already in use: make_sock: could not bind to...
  10. Ineligible Devices 不被识别的设备
  11. iOS Multiview Applications
  12. 解决dispaly:inline-block 遗留间隙的问题
  13. 为iPhone 6设计自适应布局
  14. IOS SWIFT 网络请求JSON解析 基础一
  15. 【Django】 rest-framework和RestfulAPI的设计
  16. [Codeforces]862F - Mahmoud and Ehab and the final stage
  17. Centos7 通配符HTTPS证书申请 实测 笔记
  18. Java编码中出现的乱码问题
  19. Java Queue之PriorityQueue
  20. python学习第天14天。

热门文章

  1. Linux音频编程指南(转)
  2. tornado用户验证
  3. Oracle PLSQL Demo - 13.游标的各种属性[Found NotFound ISOpen RowCount CURSOR]
  4. Build IKAnalyzer With Solr 5.1.0
  5. 经典 makefile 教程
  6. Logstash5.3借助临时字段修改@timestamp为北京时间,方便按天生成output文件
  7. C中结构体的存储分配
  8. 带命名空间的XML的dom4j应用&lt;转&gt;
  9. HTML——动画效果:图片循环横向播放
  10. http抓包工具