我应该绑定到 ICollectionView 还是 ObservableCollection

2024-03-12

应该一绑定DataGrid to the

ICollectionView = CollectionViewSource.GetDefaultView(collection)

或到

ObservableCollection<T> collection; ???

MVVM 的最佳实践是什么?为什么?


You always绑定到一个ICollectionView,无论你是否明确表示。

假设我们有

var collection = new ObservableCollection<string>();
var collectionView = CollectionViewSource.GetDefaultView(collection);

在这种情况下,绑定到collection or to collectionView是一回事:绑定引擎将绑定到默认集合视图(引用等于collectionView)如果你告诉它绑定到collection.

这意味着您问题的答案是“绝对没有区别”。

需要完全明确的是:即使您直接绑定到集合,绑定引擎也会绑定到默认视图。修改视图的属性(例如排序条件)将影响看起来直接绑定到集合的绑定,因为在幕后它是绑定到默认视图的。

然而,还有另一个有趣且相关的问题:应该绑定到默认集合视图(即绑定到集合本身,因为没有理由显式绑定到默认视图)还是绑定到同一集合的另一个视图?

考虑到每个视图都有自己的当前项目、排序标准等概念,因此如果您打算对同一集合进行多个绑定,并且绑定控件需要具有不同的当前项目、过滤器和公司概念,那么您想要的是显式绑定到同一底层集合的多个视图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该绑定到 ICollectionView 还是 ObservableCollection 的相关文章

随机推荐