我正在尝试在combox框中显示文化,我希望用户在选择时接收文化的DisplayName,但我得到文化代码,即'en','ar'等
组合框的itemsource是
ItemsSource="{Binding Path=SupportedCultures, Mode=OneWay}" SelectedItem="{Binding SelectedItem.Language}" SelectedValue="DisplayName" DisplayMemberPath="DisplayName"
SupportedCultures属性
public static List<CultureInfo> SupportedCultures
{
get
{
return _SupportedCultures;
}
}
如何在我的selectedItem的Language属性中获取DisplayName,该属性的类型为string?
答案 0 :(得分:0)
您的代码几乎是正确的。你的清单是静态的。因此,要绑定它,您应该使用{x:Static} source:
ItemsSource="{Binding Source={x:Static yournamespace:YourClassName}, Path=SupportedCultures, Mode=OneWay}"
DisplayMemberPath="DisplayName"
请注意,SelectedItem =&#34; {Binding SelectedItem.Language}&#34;将您选择的CultureInfo绑定到ComboBox的DataContext。因此,在这种情况下,ComboBox的DataContext应该具有CultureInfo语言{get; set;}属性的对象SelectedItem。我不认为你在寻找什么?)
答案 1 :(得分:0)
SelectedItem
需要您ItemsSource
绑定的同类对象,因此请勿使用该对象。如果要根据属性的值进行选择,请使用SelectedValue
,并告诉WPF检查该值的属性,使用SelectedValuePath
:
ItemsSource="{Binding SupportedCultures, Mode=OneWay}"
SelectedValue="{Binding SelectedItem.Language}"
SelectedValuePath="DisplayName"
DisplayMemberPath="DisplayName"