【发布时间】:2026-01-30 07:40:01
【问题描述】:
我正在处理后端类中的 2 个列表。每个列表都是不同的类型。想要呈现用户单个列表(包含两个列表的union),其中选择此列表中的项目时项目的详细信息显示。
代码如下所示:
我的后端类看起来像这样
public ObservableCollection<Person> People {get;}
public ObservableCollection<Product> Products {get;}
我的 XAML 看起来像这样
<ListBox x:Name="TheListBox" ItemsSource={Some Expression to merge People and Products}>
<ListBox.Resources>
People and Product Data Templates
</ListBox.Resources>
</ListBox>
...
<ContentControl Content={Binding ElementName=TheListBox, Path=SelectedItem }>
<ContentControl.Resources>
Data Templates for showing People and Product details
</ContentControl.Resources>
</ContentControl>
有什么建议吗?
【问题讨论】:
-
我正在寻找类似的东西,我可以直接从标记中使用它并且不会污染我的视图模型界面。它应该基本上解决了视图模型提供的项目之间的不匹配,这些项目可能是多个集合或只是几个独立的属性与 WPF 所期望的,这是一个单一的可枚举。理想情况下,我什至想直接在标记中添加项目,这些项目甚至不对应于视图模型中的任何内容,而是合并到同一个列表中。
标签: wpf mvvm listbox binding itemssource