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

c# - 将一组列表绑定到另一个包含列表的对象列表中的组合框

为简单起见,我将使用“汽车制造商”和“汽车模型”的概念来解释我的问题。我有一个汽车制造商的清单,每个汽车制造商都有自己的汽车型号清单。我需要填充一个组合框,其中包含所有汽车型号的列表。我对此进行了研究,并相信 CompositeCollection 是可行的方法,但是,当我不知道我的 CarMake 列表有多大时,我似乎无法弄清楚如何做到这一点。使用固定长度的 CarMake 列表,我可以执行以下操作,但我需要它是动态的。

任何帮助将非常感激。此外,在运行应用程序时,汽车制造商列表以及汽车型号有可能(甚至有可能)增长/更改。

0 投票
1 回答
528 浏览

c# - 具有复合集合的组合框不会随着对 observablecollection 的更改而更新

正如标题所示;我有一个组合框,它使用复合集合绑定到使用 MVVM 模式的可观察集合。

如果我用现有数据加载我的模型,那么组合框会显示这些值,因此我知道绑定有效。我可以将项目添加到可观察集合中,并且它们显示在数据网格中,因此我知道可观察集合上的通知属性更改事件正在工作。我怀疑它不起作用,因为复合集合使用“静态资源”作为其源,但如果我将其更改为动态资源,则会出现错误:

不能在“Binding”类型的“Source”属性上设置“DynamicResourceExtension”。只能在 DependencyObject 的 DependencyProperty 上设置“DynamicResourceExtension”。

我已经搜索了几天以找到解决方案,而其他人也面临类似的问题,但解决方案尚未解决我的问题。

这是我的模型代码:

我的视图模型:

最后是我对组合框的看法的 XAML:

提前非常感谢大家。

编辑:

所以我已经朝着一个方向前进;对与错尚未决定。

我想我已经将问题追溯到组合框本身之外,因此这里需要更多上下文。

组合框位于选项卡控件的第二个选项卡上。每个选项卡项都有自己的数据上下文,指向自己的视图模型。在第一个选项卡上输入数据,我希望该数据显示在第二个选项卡的组合框中。

如果我在第一个选项卡上放置一个组合框,那么该组合框会随着在第一个选项卡上输入的可观察集合中的更改而更新。所以问题(我认为)是第二个选项卡上的组合框试图同时绑定到两个不同的视图模型。一个用于项目源,另一个用于选定值。

在另一个线程中有一个建议使用 x:Reference 作为数据上下文,但我似乎无法找出正确的语法。

如果您仍在阅读本文,那么非常感谢您提供任何帮助。

0 投票
1 回答
402 浏览

c# - 将选项卡控件项绑定到 ObservableCollection 的 PROPERTY,并带有一个扭曲

我有一个TabControl

我按照这里选择的答案来信。问题是,在我的情况下,ExistingTabs 不是 ObservableCollection,而是 ObservableCollection 的属性

这是我所做的:

当然,这会将 testData 放在选项卡中,而不是 tiTestTab 属性中。

我很茫然。

最好是仅 XAML。使用 C# 和 Visual Studio 2013。

谢谢。

0 投票
2 回答
1347 浏览

c# - WPF Combobox CompositeCollection 绑定 ComboboxItem 内容和字符串列表

我正在使用 WPF,并且在我的视图中有一个组合框。我的要求是在组合框中显示一个名称列表(范围从 0 到 n 个元素)和一个可本地化的字符串“虚拟名称”。所以我从两个不同的来源获取组合框的 ItemsSource,一个名为“names”的字符串列表 + 一个本地化字符串“Dummy Name”。这一切都很好。所有元素都按应有的方式显示。这是我在 WPF 中的定义:

CollectionViewSource 是资源字典的一部分,我只是将其省略了。问题出在 ComboBoxItem 元素上。

当它在组合框中被选中时,它会将字符串“Combobox: Dummy Name”分配给 Person.LastName,而不是“Dummy Name”。

将 Combobox 的 SelectedMemberPath 属性设置为“Content”也不起作用(我猜是因为 Names 中的字符串没有 Content 属性)。

当在组合框中选择“虚拟名称”而不是“组合框:虚拟名称”时,如何将“虚拟名称”分配给 Person.LastName?

0 投票
1 回答
784 浏览

c# - 动态绑定和静态添加 MenuItems - 使用视图模型/MVVM

我正在尝试使用可观察集合中的 MVVM 来创建一个动态菜单项。一切正常,但我需要在最后添加一个“添加新”按钮。我找到了一个使用 CompositeCollection 的解决方案,如下所示:

如何动态绑定和静态添加 MenuItem?

所以有以下代码,其中 TimeSpans 是 ViewModel 的集合:

但是,视图模型并没有像使用 ItemsSource="{Binding TimeSpan}" 那样填充,它没有显示任何内容:

在此处输入图像描述

我怀疑这是因为我在 StackOverflow 上面的答案绑定实际上是 MenuItems 的集合,所以复合集合是有意义的。而我的混合 ViewModels 和 MenuItems。

有没有办法在 XAML 中构造从 ViewModels 创建的菜单项集合,以便我可以绑定它?

0 投票
1 回答
339 浏览

c# - 用复合集合“加倍”填充 MenuItem

我正在尝试使用一组子项填充菜单项。这很容易,但是我需要添加一个始终存在的额外功能,它执行“添加”操作。我使用复合集合将其添加到需要显示的现有项目集合中。

这是代码:

它几乎可以工作。我试图显示的 DataContext.TimeSpan ViewModel 是“嵌套”在两个 MenuItem 内,而不是仅仅填充一个,所以我得到了这种奇怪的行为(这只有一个 TimeSpanViewModel“时间跨度”:

鼠标在“内部”MenuItem 之外。请注意,如果您按下它,内部的功能会起作用:

在此处输入图像描述

普通菜单项:

在此处输入图像描述

有人对如何解决这个问题有任何想法吗?

0 投票
1 回答
171 浏览

wpf - How to use a property of the view model in a CompositeCollection?

When I have a comboBox in my view and want a empty item to be able to unselect the option, I use this code in my view:

In this case, is the view which sets the ID to -1 to indicate that is special item. But I don't like so much this solution because the view model depends that the view sets it correctly.

So I am thinking to have this property in my view model:

But I don't know how to use it in my composite collection in the view instead of:

Is it possible?

Thanks.

0 投票
1 回答
283 浏览

wpf - 使用 CompositeCollection 向 ComboBox 添加自定义值

我是 WPF 的新手。I have a combobox which when choosing a value three other fields ( AbbrBlock, MultiBrandSupplier, IgnoreNoCompetition) update along to show the correct relevant values according to the data source. 这没问题。

当我尝试向组合框添加自定义值时出现问题,尽管组合框正确显示所有值,但在更改组合框的值时其他字段不会改变。

这是工作代码(没有额外的自定义组合框值 - 剥离到关键部分):

这是添加了正确显示的自定义值的代码,但在更改组合框值时其他字段不会更新:

我在这里想念什么?

0 投票
1 回答
578 浏览

wpf - CompositeCollection 中的多个 DisplayMemberPaths?

我是 WPF 的新手。我有一个 StackPanel,其中包含多个组合框,其中 ItemSource(以 StackPanel 的样式设置)来自CaSupplierColumnsSQL Server 中的视图()(Visual Studio 自动创建了我ordersDataSet从数据源面板拖动的链接)。这没问题。

当我使用CompositeCollection以将自定义值添加到组合框之一 ( Manufacturer) 时出现问题,所有值都正确显示并且添加的项目也出现 - 但为空白。添加的项目在组合框中显示为空白选项。

我发现的罪魁祸首是DisplayMemberPath设置为Columns(这是数据库视图中列标题的名称),当我DisplayMemberPath将此组合框设置为 null 时,添加的项目确实正确显示,但组合框中的其他值显示为System.Data.DataRowView.

如何DisplayMemberPath在一个 CompositeCollection 中有两个不同的 s?或者也许有不同的方法来做到这一点?

这是我当前的 XAML(去掉关键部分):

0 投票
2 回答
5872 浏览

c# - XAML 绑定到 CompositeCollection

我在单个视图中只有一个数据网格,但作为此数据网格的 ItemsSource 的集合位于不同的视图模型中。那么是否可以将视图中的这个单个数据网格与两个不同视图模型中的集合绑定?

对于网格中的每一行,显示一个集合中的一个项目,以及另一个集合中的一个项目..!在一行中显示所有列。

xml:

xml.cs:

ViewModelCombine.cs

根据上面的代码,它显示像这样输出..但是,想要在一行中显示所有列。

那么是否可以将视图中的这个单个数据网格与两个不同视图模型中的集合绑定?

谢谢你的帮助。