问题标签 [compositecollection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4210 浏览

wpf - 为什么 CompositeCollection 不可冻结?

我正在使用 MVVM 模式编写应用程序。我通过将视图的 DataContext 属性设置为 ViewModel 的实例来向视图提供数据。一般来说,我只是从那里使用 Binding 并按照我的方式行事。

最近,我尝试使用 ViewModel 提供的“Select Item”集合之外的“额外”元素来实现一个 ComboBox。

问题是,CompositeCollection 不是 Freezable: Freezable Objects Overview。这只会导致静态 ComboBoxItem 出现,而​​我的绑定表达式没有任何结果。

我对这个问题的最初反应是实现我自己的可冻结的 CompositeCollection版本。然而,这引出了以下问题:

为什么 CompositeCollection 首先不是 Freezable ?

我担心的是,这些决定通常是有原因的,我觉得我对 Freezable 了解得不够多,无法说出他们为什么没有继承它。我知道我可以实现这个集合,但我担心如果我这样做会在性能上产生可衡量的差异。

任何帮助,将不胜感激。谢谢!

另外:请注意,我意识到我可以插入 Null 或其他一些特殊值,并提供模板或 valueconverter 来做我想做的事。这不是我感兴趣的问题……只有上面粗体字的问题。

更新:

在 ArsenMkrt 的评论带来的一些进一步研究之后,我相信这实际上是一个疏忽。证据是这样的:

  1. 有一个冻结的集合,称为FreezableCollection<T>. 它不会产生 CollectionViews,这使得它不适合我的需求。
  2. MSFT 的 Sam Bent 在上面的链接中说了这么多。我还找不到他的联系方式,但如果有机会,我打算和他讨论一下。

我目前解决这个问题的计划是创建一个具有 CompositeCollection 和FreezableCollection<T>. 我不知道它是否会起作用,但我正在考虑这样的事情:

如果有人有更好的选择,我想听听!

0 投票
1 回答
997 浏览

c# - 解决 CompositeCollection 中缺少分组的问题

当我尝试将 GroupDescriptor 添加到我的 CompositeCollection 时,我收到一个异常通知我 CompositeCollection 不支持分组。

我想知道是否有人找到了解决此限制的好方法。我有两个集合,我将它们“压缩”在一起并尝试分组。如果有任何帮助,我对集合之间的分组不感兴趣,只是在集合中它们本身。

0 投票
1 回答
1145 浏览

datagrid - CompositeCollection 上的 DataGrid 崩溃编辑

我有一个数据网格。它的 ItemsSource 通过 ViewModel 绑定到 ModelView 的 CompositeCollection。CompositeCollection 由 2 个 ObservableCollection 组成。

网格上的显示很好。我可以看到收藏。但是,当我尝试编辑其中一行时,我遇到了崩溃 (NotSupportedException):“此视图不允许使用‘EditItem’”

如何使行可编辑?我需要能够编辑表示网格中每一行的模型视图。

这是我用来绑定到 itemssource 的 CompositeCollection 属性代码: 这不是确切的代码,因为我不允许发布确切的代码,但它与我如何制作集合的逻辑相同

公共 CompositeCollection ModelViewsCollection { get { CollectionContainer modelViewContainer;

modelViewContainer= 新的 CollectionContainer(); modelViewContainer.Collection= this.ModelViewCollection2; modelViewCollection .Add(modelViewContainer);

0 投票
3 回答
5737 浏览

wpf - 如何处理具有 CollectionView 功能的 CompositeCollection?

当 CompositeCollection 的当前位置发生变化时,有没有办法得到通知?

我需要由 CollectionView 监控 CompositeCollection,欢迎提出任何想法。

0 投票
2 回答
1886 浏览

wpf - 关于如何对 CompositeCollection 进行排序的任何想法?

我有一个 CompositeCollection,它由两种类型的 ObservableCollections 组成:公司和联系人。Contact 有一个属性 FullName,而 Company 有一个属性 Name。

我想应用排序,以便集合按类型混合但按名称排序,例如:

Itzhak Perlman
John Doe
Microsoft
Sarah Moore
StackOverflow
Walter Richardson

请注意,我将 ItemsControl 绑定到 CollectionViewSource,它的 Source 设置为 CompositeCollection,它的视图变成了 CompositeCollectionView,它是一个内部类型,如果我将它的类型显式设置为 ListCollectionView,它只包含 CollectionContainers 作为它的项目。

所需的解决方案是在 CompositeCollection 上启用排序、过滤和分组的解决方法,我不想覆盖和创建自己的 CompositeCollection,我只是不知道如何覆盖它并在 xaml 中启用它的功能。

0 投票
1 回答
663 浏览

wpf - CompositeCollection 会破坏 ComboBox AutoComplete-Feature?

大家好!

我正在使用带有IsTextSearchEnabled="True"(自动完成)的 WPF ComboBox,并希望将其 ItemsSource-Property 绑定到 CompositeCollection。不幸的是,Combobox 似乎无法识别 CompositeCollection 中 CollectionContainer 提供的项目。它们会显示,但不会被 AutoComplete 选中。

请尝试示例,输入“def”。如果“def”没有被选中,你已经重现了我面临的问题。有没有什么解决方案,我监督过的东西,或者在拥有一些合并收集功能的同时解决问题的实用方法?

谢谢!- 达特拉克斯

0 投票
3 回答
1344 浏览

.net - 遍历 CompositeCollection 的项目

考虑代码:

虽然列表在 GUI 上显示正确的数据

我需要这些数据(不参考 ListBox)但我没有得到它

0 投票
1 回答
996 浏览

wpf - 将集合依赖属性数据绑定到用户控件中的菜单

我有一个带有自己上下文菜单的用户控件,但是我需要向该菜单添加其他项目。

我采用的方法是拥有一个名为 ContextMenuItems 的依赖属性:

然后我使用 CompositeCollection 将控件中的静态菜单项与主机提供的列表结合起来:

当我绑定到该资源时,我看到的是:

  • 测试
  • (收藏)

第二个菜单项绑定到集合以证明我可以访问它。我有一个已添加到菜单项的测试转换器,它在转换器方法中中断,但是当我将转换器添加到 CollectionContainer 时,它不会被调用。

最后,我在输出窗口中收到以下错误:

System.Windows.Data 错误:4:找不到与引用“RelativeSource FindAncestor,AncestorType='System.Windows.Controls.UserControl',AncestorLevel='1''的绑定源。绑定表达式:路径=上下文菜单项;数据项=空;目标元素是'CollectionContainer'(HashCode=41005040);目标属性是“集合”(类型“IEnumerable”)

0 投票
0 回答
1183 浏览

wpf - 如何在 WPF 和 MVVM 中使用 CompositeCollection

我有一个使用 MVVM 的 WPF 应用程序。我在表单上有一个 DataGrid,DataGrid 有一列带有一个包含 ObservableCollection 的 ComboBox。

我想在组合框的顶部添加一个“请从列表中选择”。我尝试使用 CompositeCollection 来执行此操作,但无法将 ObservableCollection 列表绑定到组合框,但“请选择”确实绑定了。

在这种情况下,如何在 ComboBox 顶部添加“请选择”?有没有人有这方面的例子?

这是我尝试过的: XAML:

0 投票
3 回答
3342 浏览

wpf - WPF在CompositeCollection中绑定MenuItem不起作用

我在将命令绑定到复合集合中的菜单项时遇到问题。MenuItemContextMenu其中定义的一部分UserControl.Resources

问题是新标签的绑定不起作用。当我将 MenuItem 放在复合集合之外时,它将起作用。有任何想法吗?