c# - WPF组合框中的CultureInfo,当更改SelectedUICulture时,DisplayName作为DisplayMemberPath不起作用

原文 标签 c# wpf xaml combobox cultureinfo

我写了一个小实用程序,用户可以在其中更改语言。我将可用的语言(如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时,此方法非常有效。

en-US example image

当用户选择一种新语言并重新启动该实用程序时,我在App.xaml.cs中为该应用程序设置了CurrentCultureCurrentUICulture,如下所示:

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,没有任何改善

最佳答案

我几次重新生成了附属程序集(不做任何更改),并且绑定突然“开始工作了:(

相关文章:

c# - 模拟和处理Ajax请求

c# - 如何为所有网格行设置最小高度?

xaml - 根据数据绑定(bind)值设置背景色

c# - IE中新窗口句柄消失

c# - 退出后防止页面查看

c# - 如何单击折叠的WPF扩展器后面的内容?

c# - WPF绑定(bind)到工具提示

wpf - 所选TabItem中的图像不清晰

xaml - FsXaml类型提供程序优于XamlReader的优势

xaml - 访问文本块的背景色