在组合框中显示文化并选择

时间:2015-08-04 09:18:46

标签: wpf

我正在尝试在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?

2 个答案:

答案 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"