我希望string.Format()
和.ToString()
调用使用固定区域性,而不是系统区域性。
System.Globalisation.CultureInfo.CurrentCulture
属性在 Windows 应用商店应用中是只读的,因此无法直接更改,这与 .NET 4.6 及更高版本中不同。
我尝试使用System.Globalization.CultureInfo.DefaultThreadCurrentCulture
(根据文档应该可以工作(,但它不会改变任何东西:
System.Globalization.CultureInfo.DefaultThreadCurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = System.Globalization.CultureInfo.InvariantCulture;
var c1 = System.Globalization.CultureInfo.CurrentCulture;
Task.Run(delegate
{
var c2 = System.Globalization.CultureInfo.CurrentCulture;
});
执行上述代码后,c1 和 c2 仍然包含我的本地系统区域性,而不是固定区域性。string.Format
仍然使用我的本地区域性设置生成字符串。
肯定有办法改变线程的文化吗?
我已将以下代码添加到我的App.Xaml.cs
构造函数中。(刚过this.InitializeComponent();
( 它对我有用。
var culture = CultureInfo.InvariantCulture;
ApplicationLanguages.PrimaryLanguageOverride = culture.Name;
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;