У меня есть ListBox
(или ComboBox
, я пробовал оба), где элементы добавляются напрямую через ListBoxItem
(ComboBoxItem
) элементов.
Данные CultureInfo
объекты, поступающие из двух ObjectDataProvider
ресурсов в элементе (или в каком-то месте выше). Вызывается метод CultureInfo.GetCultureInfo
stati c.
Одним словом, я хотел бы заполнить ListBox/ComboBox
некоторыми записями CultureInfo
.
Привязка данных работает нормально , но при установке DisplayMemberPath
в одно из свойств CultureInfo
(например, DisplayName
- я бы хотел, чтобы отображался «Engli sh», а не «en-US»), ничего не происходит , Как ни странно, если я пытаюсь с помощью ComboBox
и выбрать один из элементов, DisplayMemberPath
работает с выбранным значением (которое отображается в текстовом поле), но не с раскрывающимся списком.
Мой вопрос : я что-то пропустил? Или DisplayMemberPath
не работает с прямыми элементами и только тогда, когда ItemsSource
привязан к коллекции (только предположение)?
<ListBox x:Name="LangListBox" DisplayMemberPath="DisplayName">
<ListBox.Resources>
<ObjectDataProvider x:Key="EngCultureInfoProvider" ObjectType="{x:Type Globalization:CultureInfo}" MethodName="GetCultureInfo">
<ObjectDataProvider.MethodParameters>
<System:String>en-US</System:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider x:Key="ItaCultureInfoProvider" ObjectType="{x:Type Globalization:CultureInfo}" MethodName="GetCultureInfo">
<ObjectDataProvider.MethodParameters>
<System:String>it-IT</System:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</ListBox.Resources>
<ListBoxItem Content="{Binding Source={StaticResource EngCultureInfoProvider}}"/>
<ListBoxItem Content="{Binding Source={StaticResource ItaCultureInfoProvider}}"/>
</ListBox>
![ListBox](https://i.stack.imgur.com/SXmoP.png)
![ComboBox](https://i.stack.imgur.com/Mu72W.png)
Примечание: использование ItemTemplate также не работает.
...
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayName}"/>
</DataTemplate>
</ListBox.ItemTemplate>
...