您可以关闭 WPF CollectionViewSource 中的选择同步吗?

发布于 2024-08-21 06:33:10 字数 190 浏览 13 评论 0原文

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

谢谢, 贾森·刘易斯

I have several CollectionViewSource instances all used on the same ObservableCollection. I also have several controls that need to show filtered versions of the collection (hence the CollectionViewSources). The problem I'm having is that CollectionViewSource forces them to all have the same item selected. Is there some way to turn this off?

Thanks,
Jason Lewis

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

慕巷 2024-08-28 06:33:10

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

CollectionViewSource.GetDefaultView(this.ItemsSource);

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

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

new CollectionView(this.ItemsSource as IList);

您可以通过使用几种实现 ICollectionView、CollectionView 和 ListCollectionView 的类型 。在上面的代码中,我没有获得我创建的新视图的默认视图,因此它的文件管理/排序是唯一的。

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

这是一篇来自 bea 的博客文章,它对此进行了更好的解释

If you use the method (im not sure about this but CollectionViewSource in xaml probably does)

CollectionViewSource.GetDefaultView(this.ItemsSource);

multiple times it will only return the same ICollectionView (if we are talking about the same collection bound multiple times), this means if you apply a filter to one it apllies to all, also as the collection view tracks the current item the current item will be syncronised between the different views.

You can work around this by creating a CollectionView for each filter/selection you want to have by using

new CollectionView(this.ItemsSource as IList);

there are a few types that implement ICollectionView, CollectionView and ListCollectionView do. in the above code i did not get the default view i created a new one, so its filering/sorting is unique.

When you use items source wpf creates a collection view to wrap the collection, this collection view is the one that is returned in the GetDefaultView call, useful for every day situations but not the edge cases.

here is a blog post from bea that explains it a bit better

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文