Есть ли способ добавить один элемент в CompositeCollection (используемый как источник для ComboBox) в дополнение к другим подкатегориям?Добавление экземпляра объекта в CompositeCollection как элемент
- Объект экземпляра элемента является собственности на
- Оба добавленного элемента и элементов в других суб-коллекции ViewModel имеют же типа.
Вот что у меня есть:
<ComboBox x:Name="combo">
<ComboBox.Resources>
<CollectionViewSource x:Key="CollectionAsAProperty" Source="{Binding CollectionA, Mode=TwoWay}" SelectedItem="{Binding CurrentItem}" />
</ComboBox.Resources>
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={x:Static local:MyViewModel.StaticCollection}}" />
<CollectionContainer Collection="{Binding Source={StaticResource CollectionAsAProperty}}"/>
===> what should I add here to add another item of DataContext.AnotherItem
</CompositeCollection>
</ComboBox.ItemsSource>
<ComboBox.ItemTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding Name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
EDIT: Это несколько работал с
<ObjectDataProvider ObjectInstance="{x:Static local:MyViewModel.AnotherItem}"/>
Но, (1) это требует статическое свойство, и (2) в прилагаемой команде (не показано здесь для краткости), тип выбранного элемента, который возвращается, - ObjectDataProvider
, а не тип MyViewModel.AnotherItem
, что вызывает некоторую боль в ViewModel
Вместо того, чтобы работать вокруг этого вопроса таким образом, вы не думаете, что было бы проще просто обернуть 'AnotherItem' в' 'IEnumerable', что CollectionContainer' может связываться как «Коллекция»? Таким образом, два упомянутых вами вопроса больше не существуют, поскольку ваше свойство больше не должно быть статическим, а также «DataType» будет иметь правильный пользовательский тип T. Что касается 'CompositeCollection' и' CollectionContainer', ve дал им новый «Список», когда на самом деле у вас только 1 элемент в этом списке ('AnotherItem') => нет функций hiccups – Viv
@Viv, я сделал это, чтобы разблокировать себя из этой проблемы. –