2016-09-07 71 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

我重新创建了几次卫星组件(没有改变任何东西),'突然'绑定开始工作:(

相关问题