2
我写了一个小实用程序,用户可以在其中更改语言。我将可用语言(如CultureInfo
)置于List<CultureInfo>
中,将其绑定到组合框并使用DisplayMemberPath
指向CultureInfo.DisplayName
。WPF CultureInfo在组合框中DisplayName作为DisplayMemberPath在SelectedUICulture变更时不起作用
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这完美的作品。
当用户选择一个新的语言,并重新启动程序,我设置了CurrentCulture
和CurrentUICulture
在App.xaml.cs应用程序如下:
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
,而没有任何改进