WPF如何将两个具有不同项目源的组合框合并为一个

WPF how to combine two comboboxes with different itemsource into one

假设我目前有两个组合框,一个显示 Productions 列表的内容,另一个显示 Seasons[=35] 的内容=] 视图模型中的列表。

<ComboBox Grid.Column="1" Grid.Row="0" Margin="3" ItemsSource="{Binding Productions}" SelectedItem="{Binding SelectedProduction}" DisplayMemberPath="DisplayName" />
<ComboBox Grid.Column="1" Grid.Row="0" Margin="3" ItemsSource="{Binding Seasons}" SelectedItem="{Binding SelectedProduction}" DisplayMemberPath="DisplayName" />

我需要做的是将这两个组合框合二为一。当点击组合框时,它应该显示一个 header 说 Productions 并且每个作品下面应该出现并且吼叫所有它应该对 Seasons 做同样的事情。所以在图形上它应该看起来像这样:

Combobox Desired Outcome


制作
生产1
生产2
生产3
四季
第 1 季
第 2 季
第 3 季

  1. 我想为了将两个列表都用作 ItemSource 我可以 制作一个包含制作和季节列表的列表,但是 还有另一种方法可以将它们绑定在同一个组合框中吗?
  2. 然后有没有可能做成图片中的样子?

我会使用专为此类用途设计的 CompositeCollection

对于分组,评论中提到的link@Floc展示了如何使用Grouping

有了这两个,我想你可以取得成功。只要两者 类 都派生自某些共同的东西以公开相似的属性,这应该非常简单。