Fork me on GitHub

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

posted @ 2009-01-17 21:37  张善友  阅读(27372)  评论(0编辑  收藏  举报