我有几个CollectionViewSource实例都在同一个ObservableCollection上使用。我还有几个需要显示集合的过滤版本的控件(因此是CollectionViewSources)。我遇到的问题是CollectionViewSource强制它们都选择了相同的项目。有没有办法解决这个问题?
谢谢, 杰森刘易斯
答案 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更好地解释了它