【发布时间】:2016-09-07 00:58:06
【问题描述】:
我编写了一个小实用程序,用户可以在其中更改语言。我将可用语言(如CultureInfo)放在List<CultureInfo> 中,将其绑定到组合框并使用DisplayMemberPath 指向CultureInfo.DisplayName。
private List<CultureInfo> languageOptions = new List<CultureInfo>();
public List<CultureInfo> LanguageOptions
{
get { return languageOptions; }
set
{
languageOptions = value;
OnPropertyChanged("LanguageOptions");
}
}
在我的构造函数中;
foreach (/* my available languages */)
{
cultures.Add(new CultureInfo(/* language ie.e en-US, de-DE etc */));
}
我使用以下 XAML 来显示所选语言:
<ComboBox x:Uid="ComboBox_3"
ItemsSource="{Binding LanguageOptions}"
DisplayMemberPath="DisplayName"
SelectedItem="{Binding Source={x:Static properties:Settings.Default},
Path=SelectedCulture}"/>
当 CurrentCulture 和 CurrentUICulture 设置为 en-US 时,这非常有效。
当用户选择一种新语言并重新启动实用程序时,我在 App.xaml.cs 中为应用程序设置了CurrentCulture 和CurrentUICulture,如下所示:
if ((TTSAutomate.Properties.Settings.Default.SelectedCulture)!=null)
{
CultureInfo ci = TTSAutomate.Properties.Settings.Default.SelectedCulture;
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
这非常有效,因为该实用程序以正确的语言显示。
但是,显示所选语言的组合框现在只显示 CultureInfo 的 Name,而不是 DisplayName。
任何人都可以就发生的事情提出建议吗?我试过NativeName,没有任何改进
【问题讨论】:
标签: c# wpf xaml combobox cultureinfo