问题标签 [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 回答
729 浏览

wpf - 使用 CompositeCollection 将两个 ObservableCollection 和 Bind Datagrid 与此 MergedCollection 作为源合并

.Xaml

.Xaml.cs

ViewModelCombine.cs

使用 CompositeCollection 将 Datagrid 绑定到 MergedCollection 作为 itemsource 时出现问题。在两行而不是一行中显示数据并在此处检查输出。

要求是在一行中显示所有列...!谢谢。

0 投票
2 回答
885 浏览

wpf - 在数据网格中,当还使用 CompositeCollection 时,如何为每一行绑定不同的 ItemsSource?

我有一个 DataGrid,其中 ItemsSource 绑定到 ObservableCollection

ObservableCollection 中的每个项目也有一个 ObservableCollection 字符串。

其中一列是包含 ComboBox 的 DataGridTemplateColumn。我希望每一行的 ComboBox 包含该行 ViewModel 中字符串的 ObservableCollection 中的项目。如果我正常绑定它,这是可行的。但是,如果我使用的是 CompositeCollection,我似乎无法让它工作。

我不确定要使用什么来让 Binding 正常工作。没有 CompositeCollection,我可以简单地做:

在搜索中,我知道您需要为 CollectionContainer 设置一个源,但大多数示例是将其设置为对所有行都相同的静态列表。我需要将每一行绑定到该行的 ViewModel 中的 ObservableCollection。

我试过了:

但这会导致以下错误:

0 投票
1 回答
268 浏览

c# - C# WPF 静态项和绑定组合框

我正在尝试在 WPF 中做一些简单的事情,但找不到方法。

我在 DataGrid 标头中有一个 ComboBox 来过滤数据。数据绑定到我所有数据的 GrouBy 语句。

这些显示了一些 CheckBox XAML 代码是:

前绑定背后的代码是:

而这项工作。

但是现在我想在 ComboBox 的末尾或开头添加 2 个按钮以选中和取消选中所有选项,但我似乎找不到如何在动态数据模板中添加这些静态按钮。

编辑对 grek40 的回答: 我想要复选框之前或之后的组合框项目中的按钮。

CompositeCollection 可以提供帮助,但我似乎无法让它发挥作用。

谢谢你

0 投票
0 回答
110 浏览

wpf - 如何在具有 CompositeCollection 作为项目源的 wpf DataGrid 上设置分组?

我正在使用 c# 和 WPF。我有一个需要绑定到多个数据源的 WPF DataGrid。我所做的是为每个数据源创建以下代码:

'myCompositeCollection' 是我的网格项目来源。我无法创建一个列表,因为数据源来自不同的实体,我不想处理每个可观察集合的添加/删除/更新/重置。

但是,每个不同的数据源都应该在网格中的不同组中。如何添加一个分组(甚至是自定义实现)而不是 ICollectionView 的常规“GroupDescriptions”,它在 CompositeCollections 上不起作用?

谢谢。

0 投票
1 回答
362 浏览

c# - WPF CompositeCollection 按每个集合视图分组

我设置了一个CompositeCollection包含两个或多个集合,如下所示(简化):

...

然后在GridView. 但是,我似乎无法添加GroupDescriptionsCompositeCollection,只能添加单个CollectionViewSource元素。

我想做的是按集合本身分组,这样ListView有一个标题,然后是第一个集合的内容,另一个标题,然后是第二个集合的内容,等等。

我是否在试图以这种方式对这些进行分组时发现错误的树?

0 投票
1 回答
714 浏览

c# - WPF 组合框中所选项目的模板与复合集合中的项目不同

我有一个复合集合,其中包括:

  • 内容为“选择供应商”的组合框项目
  • 包含供应商对象集合的集合容器,绑定到组合框cmbVendor

从组合框中选择供应商时,将ToString()调用该方法。但是,我想显示Name所选 Vendor 对象的属性值。 在此处输入图像描述 在此处输入图像描述

设置组合框属性DisplayMemberPath='Name'有效,但加载时不再显示“选择供应商”,这是不希望的。

笔记:

  • 有时从代码隐藏中选择 Vendor 对象
  • ToString()由于其他原因,我无法覆盖供应商对象的方法

有什么建议么?

XAML

供应商转换器

行为

0 投票
1 回答
546 浏览

c# - 如何合并集合中的两个源并在组合框中正确显示它们?

我有一些让我生气的 XAML 代码。首先是为未引用的值添加一个虚拟项目。

为此,我必须实现 aCollectionViewSource和 a CompositeCollection。现在我无法选择第一个组合框项目,它出现但我无法选择它,因为我设置了DisplayMemberPath在 XAML 中设置了(我猜是这样)。此外,分隔符看起来不像预期的那样。

我来给你展示:


截屏


如果我不设置 XAML DisplayMemberPath,我可以使用 Dummy Item 但绑定的项目显示不正确:

截屏

XAML:

我所需要的只是一个虚拟/占位符组合框项目,它显示在ObservableCollection<myClass>. 难道我的思维方式不对?有更聪明的解决方案吗?我在我的解决方案中遗漏了什么吗?

0 投票
1 回答
226 浏览

c# - 如何过滤 CollectionContainer

我在结合使用CompositeCollection执行ICollectionView过滤时遇到问题。

插图描述了我想要实现的目标: 带有过滤器文本框、项目集合和“添加”按钮的窗口

要求:

  • “添加”按钮必须是WrapPanel的一部分
  • 过滤应该通过ICollectionView.View.Filter执行

调试窗口.xaml:

DebugWindow.xaml.cs:

问题是,这是与Resources中定义的CollectionViewSourceview = CollectionViewSource.GetDefaultView(MyCollection);相关联的View,而不是CollectionContainer的 View 。所以刷新了错误的View,显示的View根本不刷新。

我能够通过扩展CollectionContainer来实现所需的行为,并连接到 CollectionChanged 事件:

并将其暴露给代码隐藏:

问题: 有没有办法在不将控件暴露给代码隐藏的情况下实现我需要的行为?是否可以将 MVVM 绑定到CollectionContainer的视图?

在此先感谢,很抱歉发了很长的帖子。

0 投票
0 回答
43 浏览

c# - 自定义迭代器如何通知订阅者对其迭代项的更改(想想“INotifyCollectionChanged”)?

我们试图将两个子集合的内容公开为一个额外的、包罗万象的IEnumerable属性。人们建议使用CompositeCollection这种情况,但有两个问题:

  1. 似乎没有只读变体,但即使有......
  2. 由于它依赖于模型层,它并不真正适合模型层System.Windows.Data

相反,我的想法是使用自定义IEnumerable实现。这是一个虚构的例子,展示了这个概念......

虽然这确实根据需要枚举了所有孩子,但我看到的问题是它All没有意识到,也没有通知更改DogsCats因为它没有实现INotifyCollectionChanged甚至INotifyPropertyChanged*,这让我想知道这是否是正确的方法首先去。

* 这实际上有点容易“坚持”。只需订阅INotifyCollectionChanged事件Dogs并在处理任何这些事件时Cats发出更改通知。All但这是一个全有或全无的事情,我不确定这是正确的方法。

我的下一个想法是推出我自己的轻量版 CompositeCollection,但我不禁认为这是使用 18 轮车去商店买牛奶。但它似乎确实有最大的希望。

有没有其他方法可以使自定义 IEnumerable 正确处理来自内部集合的通知?(我也不反对一开始就放弃将其作为model属性,而是在 UI 层中进行组合。我是否这样做取决于我在这里得到的答案。)