На основании этого ответа https://stackoverflow.com/a/33109026/426386 Я добавляю пустой элемент в коллекцию ComboBox. Поскольку мои выпадающие имеет SelectedValue и SelectedValuePath определенное, я побегу в Bindingerrors:Пустой ComboBoxItem с SelectedValuePath Binding
<UserControl.Resources>
<ObjectDataProvider
x:Key="CardTypeProvider"
MethodName="GetLocalizedEnumValues"
ObjectType="{x:Type base:Localize}">
<ObjectDataProvider.MethodParameters>
<x:Type
TypeName="base:CardTypes" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</UserControl.Resources>
<ComboBox
DisplayMemberPath="Value"
SelectedValue="{Binding GroupByCardType, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="Key">
<ComboBox.Resources>
<CollectionViewSource
x:Key="Items"
Source="{Binding Source={StaticResource CardTypeProvider}}" />
</ComboBox.Resources>
<ComboBox.ItemsSource>
<CompositeCollection>
<TextBlock />
<CollectionContainer
Collection="{Binding Source={StaticResource Items}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
В ObjectDataProvider возвращает следующий Тип:
Dictionary<Enum, string>
Чтобы избежать Binding ошибок, которые я хочу, чтобы создать экземпляр KeyValuePair<Enum, string>
вместо TextBlock. Возможно как-то?
Согласно http://stackoverflow.com/a/1708753/426386 Я способный моделировать общий тип, но могу ли я его создать? Или попросить более упростить: могу ли я создавать экземпляры типов (или обернуть их каким-то образом)? – Florian
Вы не можете создавать экземпляры g e n e r i c типов в XAML. Вы можете определить не-общий класс, который обертывает класс KeyValuePair, или вы можете просто добавить к нему свойство Key и Value в соответствии с моим ответом. Все элементы являются экземплярами некоторого типа. –
mm8