问题标签 [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.
c# - 将可观察集合的层次结构展平为单个可观察集合
我有一个可观察集合的层次结构,有点像这样:
给定一个IItem
(或一个ObservableCollection<IItem>
),我想构建一个其他可观察的集合,该集合递归地包含所有子IItem
项。然后,此集合将用作 WPF 列表视图的数据源(例如)。
修改这些项目中的任何一个以具有其他子项应该更新生成的 observable 集合。请注意,没有循环引用。
我知道CompositeCollection 类,我相信这应该对我有帮助(我认为我需要的只是一个复合集合,它递归地包含一个复合集合,其中每个孩子都有一个复合集合Children
),但我看不到一个简洁的方法来这样做是因为此类没有能力将孩子“模板化”到所需的复合集合中。
wpf - 如何将 ComboBox 转换为使用绑定的 CompositeCollection?
我有一个 ComboBox,它有一个绑定的项目源......我已经将我的示例剥离到关键部分:
这可行,但我现在想在我的组合框中添加一个手动项目,该项目将触发名为“其他...”的替代功能,因此我不得不转向使用 CompositeCollection ...,如下所示:
尽我所能,使用 CompositeCollection 时绑定的项目不会填充。它仅显示手动 ComboBoxItem“其他...”。如果我删除该项目,则列表为空。如果我将断点附加到转换器,它不会捕获任何东西,这似乎表明甚至没有尝试绑定。
我显然不了解 CompositeCollection 中的绑定功能是如何发生的。有人可以在我的 XAML 中看到错误或解释我缺少什么吗?
wpf - WPF中的绑定/触发“全选”-CheckBox ComboBoxItem
除了用户定义的项目列表之外,我正在尝试制作一个带有“全选”项目的 WPF CustomControl CheckComboBox。选择“全选”时,应相应检查列表中的所有项目。如何对单击的“全选”项目采取行动?我尝试了很多东西,但从未输入 CheckComboBox.cs 中的属性“SelectAll”。
这是我当前的代码。
通用的.xaml
CheckComboBox.cs
设置测试数据:
编辑: 将CheckComboBox.cs中的 SelectAll DependencyProperty 替换为以下代码,但未输入 OnSelectAll。SelectAll 组合框由于某种原因不会触发绑定。
c# - 将带有集合容器的复合集合从 xaml 转换为 C#
基本上我想将我在 xaml 中所做的事情转换为 C#。这与以下问题有关: Bind a string in xaml to a property
这就是在我的情况下需要和使用代理的原因: http ://www.thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not -遗传/
允许我绑定到 CollectionContainer 的代理类:
在我的控件资源中定义的代理:
我最终想要转换为 C# 的 Xaml 代码:
我不想在我的视图模型集合中但希望向用户显示的字符串常量:
wpf - 如何发送有关组合集合更改的通知
我有一个复合集合。从后面的代码修改其项目后,我希望视图得到更新。但我不知道如何通知视图。我试过了INotifyCollectionChanged
,但它对我不起作用。
c# - TreeView with CompositeCollection, expand arrow not showing
I have a TreeView which is bound to CompositeCollection made of MyItem and MyGroup objects.
Class definitions:
XAML:
Code for setting up the tree:
The problem is whenever I run the code, only First and Second are displayed, but the expand arrow is not present next to Second, and it can't be expanded. Debugging shows the g2 has g3 as child, but it is not present in the TreeView control.
How can I fix it? The aim is to do it with as little code as possible, I try to avoid adding loads of abstraction layers and wrapper classes...
Went through these, didn't solve my problem:
wpf - CompositeCollection/CollectionViewSource 混淆
我对使用这些类型时数据绑定的工作方式有点困惑。
我读过您不能执行以下操作
因为 CompositeCollection 没有 datacontext 的概念,因此其中使用绑定的任何内容都必须设置 Source 属性。如以下:
但这是如何工作的?它将源设置为某些东西,但是那个东西,在这种情况下, CollectionViewSource 使用数据上下文(因为它没有明确设置源)。
那么既然在Window的资源中声明了“list”,是不是就意味着它获取了Windows DataContext呢?在这种情况下,为什么以下也不起作用?
wpf - 绑定到 CompositeCollection 时,ComboBox 未选择正确的项目
我有一个绑定到动物集合的组合框。我从中选择了我最喜欢的动物。我需要绑定项目上方的静态空项目。我使用 CompositeCollection 声明它。当 ComboBox 被绑定时,它不会选择我最初最喜欢的动物。我该如何解决?这里有类似的问题,但仍未解决。
观察:
- 绑定到静态项目有效,即如果我没有最初最喜欢的动物,则选择静态项目。
- 如果删除静态项目,问题就会消失。当然,这会使 CompositeCollection 和整个问题过时。
我已经应用了这些措施:
完整的 C# 代码和 XAML 来演示问题:
XAML
wpf - 将对象实例作为项添加到 CompositeCollection
除了其他子集合之外,有没有办法将单个项目添加到 CompositeCollection(用作 ComboBox 的源)?
- 项目的对象实例是 ViewModel 上的一个属性
- 添加的项目和其他子集合中的项目都是相同的类型。
这是我所拥有的:
编辑:它有点用
但是,(1)它需要一个静态属性,并且(2)在附加的命令中(为简洁起见,此处未显示),返回的所选项目的类型是ObjectDataProvider
,而不是 的类型MyViewModel.AnotherItem
,这会在 ViewModel 中造成一些痛苦
.net - 在wpf中使用复合集合获取选定项
我正在尝试将列表框的 itemsSource 设置为复合集合。
但是与 selectedItem 的绑定不起作用。选择项目后,如何在视图模型中获取所选项目?