2016-09-07 106 views
2

我寫了一個小實用程序,用戶可以在其中更改語言。我將可用語言(如CultureInfo)置於List<CultureInfo>中,將其綁定到組合框並使用DisplayMemberPath指向CultureInfo.DisplayNameWPF 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這完美的作品。

en-US example image

當用戶選擇一個新的語言,並重新啓動程序,我設置了CurrentCultureCurrentUICulture在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

sk-SK example image

任何人都可以提出一個建議來是怎麼回事?我已經試過NativeName,而沒有任何改進

回答

1

我重新創建了幾次衛星組件(沒有改變任何東西),'突然'綁定開始工作:(

相關問題