【发布时间】:2016-03-15 12:09:06
【问题描述】:
我正在开发一个多语言应用程序,该应用程序应该在所有语言中具有相同的 NumberFormat 和 DateTimeFormat(总共 4 个)。 我觉得实现这一点的最佳方法是只设置一次这些格式,而不是每次将值转换为字符串时,因为这可能会在某些值上被遗忘并导致错误。
在 Silverlight 应用程序中,这可以通过以下方式实现:
var cultureInfo = new CultureInfo(languageCode);
cultureInfo.NumberFormat.NumberGroupSeparator = " ";
cultureInfo.NumberFormat.NumberDecimalDigits = 2;
cultureInfo.NumberFormat.NumberDecimalSeparator = ",";
cultureInfo.DateTimeFormat.ShortDatePattern = "dd'/'MM'/'yyyy";
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
由于Thread.CurrentThread.CurrentCulture 不再可用,我改用CultureInfo.CurrentCulture。
不幸的是,使用此方法似乎没有在整个应用程序中设置自定义cultureInfo。我在OnLaunched 方法中设置了文化,所以我认为它设置在正确的线程上。
我知道,自 WinRT 以来,应用程序只能在应用程序拥有资源的一种文化中运行,但这是否意味着我们不能再覆盖 NumberFormat?或者有没有更好的方法来达到我想要的结果?
【问题讨论】:
标签: c# xaml windows-runtime winrt-xaml win-universal-app