如何在 C#/Windows 应用商店应用中更改 CultureInfo.CurrentCulture



我希望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;

最新更新