【问题标题】:WPF CultureInfo in a combobox, DisplayName as DisplayMemberPath doesn't work when the SelectedUICulture is changed组合框中的 WPF CultureInfo,当 SelectedUICulture 更改时,DisplayName as DisplayMemberPath 不起作用
【发布时间】:2016-09-07 00:58:06
【问题描述】:

我编写了一个小实用程序,用户可以在其中更改语言。我将可用语言(如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# wpf xaml combobox cultureinfo


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 2012-11-27
      • 2013-11-03
      • 1970-01-01
      相关资源
      最近更新 更多