ObservableCollection 类
Posted 张善友
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ObservableCollection 类相关的知识,希望对你有一定的参考价值。
Windows Presentation Foundation (WPF) 在 Microsoft .NET Framework 中添加了一些功能,您可以可靠地使绑定控件与其数据源保持一致。这个类就是ObservableCollection。
Windows Presentation Foundation (WPF) 在 Microsoft .NET Framework 中添加了一些功能,您可以可靠地使绑定控件与其数据源保持一致。这个类就是ObservableCollection<T>。
利用 ObservableCollection 类,WPF /Silverlight 应用程序可以使绑定控件与基础数据源保持同步,但它还提供了更有用的信息,尤其是 ObservableCollection 类还可以在您添加、删除、移动、刷新或替换集合中的项目时引发 CollectionChanged 事件。此功能还可以在您的窗口以外的代码修改基础数据时做出反应。
通常我们采用WCF服务所使用的List<T>, 在Silverlight客户端生成的代理都会使用ObservableCollection 替代,没有用过Silverlight的同学可以到这篇文章《推荐一个Silverlight多文件(大文件)上传的开源项目》看到上传文件集合类FileCollection就是ObservableCollection的子类 。当我们在列表(比如ListBox)显示了一个CLR对象列表(比如List)时,如果想在修改List对象后,ListBox也动态的反映这种变 化。此时,我们应该使用动态的ObservableCollection对象绑定。而不是直接的更新ItemSource。两者的区别在于直接更新 ItemSource会使WPF抛弃ListBox已有的所有数据,然后全部重新从List加载。而使用ObservableCollection可以避免这种先全部删除再重载的过程,效率更高。所以你不应该感到奇怪,应该深入的学习一下ObservableCollection类,2008年12月的Msdn杂志正好有一篇非常详细的文章:http://msdn.microsoft.com/zh-cn/magazine/dd252944.aspx
以上是关于ObservableCollection 类的主要内容,如果未能解决你的问题,请参考以下文章
通过使用 LINQ 和 MVVM 过滤两个相同类型的 ObservableCollection 创建一个 ObservableCollection
Listview 双向绑定与 ObservableCollection
如何将标签的 ItemsControl 绑定到 ObservableCollection
WPF ObservableCollection 异步调用问题