2

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

谢谢,杰森刘易斯

4

1 回答 1

0

如果您使用该方法(我不确定,但 xaml 中的 CollectionViewSource 可能确实如此)

CollectionViewSource.GetDefaultView(this.ItemsSource);

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

您可以通过为您想要使用的每个过滤器/选择创建一个 CollectionView 来解决此问题

new CollectionView(this.ItemsSource as IList);

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

当您使用 items source wpf 创建一个集合视图来包装集合时,此集合视图是在 GetDefaultView 调用中返回的集合视图,它适用于日常情况,但不适用于边缘情况。

这是bea的一篇博客文章,它解释得更好

于 2010-02-10T00:46:49.687 回答