你能在WPF的CollectionViewSource中关闭选择同步吗?

时间:2010-02-09 23:49:59

标签: wpf selection observablecollection collectionviewsource

我有几个CollectionViewSource实例都在同一个ObservableCollection上使用。我还有几个需要显示集合的过滤版本的控件(因此是CollectionViewSources)。我遇到的问题是CollectionViewSource强制它们都选择了相同的项目。有没有办法解决这个问题?

谢谢, 杰森刘易斯

1 个答案:

答案 0 :(得分:0)

如果您使用该方法(我不确定这个,但xaml中的CollectionViewSource可能会这样做)

CollectionViewSource.GetDefaultView(this.ItemsSource);

它会多次返回相同的ICollectionView(如果我们正在讨论多次绑定的同一个集合),这意味着如果你将一个过滤器应用于它所有的apllies,同样当集合视图跟踪当前项目时当前项目将在不同视图之间同步。

您可以通过使用

为每个要使用的过滤器/选择创建CollectionView来解决此问题
new CollectionView(this.ItemsSource as IList);

有几种类型可以实现ICollectionView,CollectionView和ListCollectionView。在上面的代码中我没有得到我创建一个新的默认视图,所以它的文件/排序是唯一的。

当您使用项目源wpf创建一个集合视图来包装集合时,此集合视图是GetDefaultView调用中返回的视图,对于每天情况都有用,但对边缘情况不是很有用。

来自bea的

here is a blog post更好地解释了它