我应该 change/set 在我的 WPF 应用程序中设置区域性信息,为什么? (必须适用于所有 .NET 框架 4.0 及更新版本)

Where should I change/set culture info settings in my WPF app and why? (Must works on all .NET frameworks 4.0 and newer)

我正在尝试为我的 WPF 应用程序设置文化信息,我发现了几个示例,例如:

CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US");

还有这样的东西:

 protected override void OnStartup(StartupEventArgs e)

            {

                  Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); ;

                  Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); ;



                  FrameworkElement.LanguageProperty.OverrideMetadata(

                    typeof(FrameworkElement),

                    new FrameworkPropertyMetadata(

                          XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));



                  base.OnStartup(e);

           }

实现此目标的正确方法是什么?我应该在哪里设置它?我认为每次设置它 windows 是 opened/loaded 不是个好主意吗?

And where should I set it?

只需打开自动生成的 App.xaml.cs 文件并覆盖 OnStartup 方法:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); ;
        Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); ;

        FrameworkElement.LanguageProperty.OverrideMetadata(
          typeof(FrameworkElement),
          new FrameworkPropertyMetadata(
                XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
        base.OnStartup(e);
    }
}

此方法在应用程序启动时调用一次。