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
,而沒有任何改進