WPF как объединить два комбинированных списка с разными источниками в один

Допустим, у меня в настоящее время есть два Comboboxes, одно из которых отображает содержимое списка Productions, а другое - содержимое списка Seasons из модели просмотра.

<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" />

Что мне нужно сделать, так это объединить эти два комбинированных списка в один. При нажатии на поле со списком он должен показать заголовок с надписью Productions, а под каждым продуктом должны появиться и ниже все, что оно должно делать то же самое с сезонами. Графически это должно выглядеть примерно так:

Желаемый результат Combobox


Производство
производство1
производство2
производство3
Сезоны
сезон1
сезон2
сезон3

  1. Я полагаю, что для использования обоих списков в качестве ItemSource я мог бы составить список, содержащий как производственные, так и сезонные списки, но есть ли другой способ связать их оба в одном поле со списком?
  2. И тогда можно ли сделать так, чтобы это выглядело как на картинке?

person kostas    schedule 21.01.2016    source источник
comment
См. Объяснение решения здесь: stackoverflow.com/questions/3585017 / И группу с typeof (). Вам также понадобится общий интерфейс для присоединения к 2 спискам.   -  person Floc    schedule 21.01.2016


Ответы (1)


Я бы использовал CompositeCollection, который был разработан специально для такого использования.

Для группировки ссылка @Floc, упомянутая в комментарии, показывает, как использовать Группировку.

Думаю, с этими двумя можно добиться успеха. Пока оба класса являются производными от чего-то общего для предоставления схожих свойств, это должно быть довольно просто.

person Kory Gill    schedule 21.01.2016
comment
Спасибо вам обоим, это именно то, что я хотел сделать :) - person kostas; 22.01.2016