Csharp/C#教程:在WPF应用程序中设置全局文化(en-IN)分享


在WPF应用程序中设置全局文化(en-IN)

我有一个以印度为基础的应用程序,我将文化设置为:

Thread.CurrentThread.CurrentUICulture = new CultureInfo(“en-IN”);

在调用Window – InitializeComponent方法之前设置上面的代码。

这仍然是在所有TextBox中显示$作为CurrencySymbol。

如果我将TextBox绑定如下,则显示“Rs”。 作为CurrencySymbol:

Text="{Binding Salary,Mode=TwoWay,StringFormat=C,ConvertCulture=en-IN}". 

我想你需要添加以下内容。

 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-IN"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-IN"); FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata( XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 

在这里阅读更多:

https://www.west-wind.com/weblog/posts/2009/Jun/14/WPF-Bindings-and-CurrentCulture-Formatting

举个例子,这就是我根据用户设置在我的程序中初始化Culture的方法,但你可以简单地用你想要的文化替换UserSettings.DefaultCultureUserSettings.Default.UICultrue

 private static void InitializeCultures() { if (!String.IsNullOrEmpty(UserSettings.Default.Culture)) { Thread.CurrentThread.CurrentCulture = new CultureInfo(UserSettings.Default.Culture); } if (!String.IsNullOrEmpty(UserSettings.Default.UICulture)) { Thread.CurrentThread.CurrentUICulture = new CultureInfo(UserSettings.Default.UICulture); } FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata( XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); } 

对我来说,只要工作,如果我将此代码放入OnStartup覆盖方法:

 public partial class App : Application { public App() { } protected override void OnStartup(StartupEventArgs e) { var vCulture = new CultureInfo("de-DE"); Thread.CurrentThread.CurrentCulture = vCulture; Thread.CurrentThread.CurrentUICulture = vCulture; CultureInfo.DefaultThreadCurrentCulture = vCulture; CultureInfo.DefaultThreadCurrentUICulture = vCulture; FrameworkElement.LanguageProperty.OverrideMetadata( typeof(FrameworkElement), new FrameworkPropertyMetadata( XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); base.OnStartup(e); } } 

 Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en-IN"); FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 

这将切换整个应用程序的默认语言。 您只想在启动代码中使用它,因为此设置每个应用程序只能应用一次。 您仍然可以在必要时覆盖单个表单,如下所示

 this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag); 

所有WPF元素都包含可以分配的语言属性,并确定用于格式化的Culture。

参考

上述就是C#学习教程:在WPF应用程序中设置全局文化(en-IN)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1030902.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐