我在 Windows 8 Metro 应用程序(XAML 和 C#)中遇到了一些关于用户区域设置的问题。似乎这些应用程序不会尊重用户的区域设置,因此即使您的 Windows 8 设置为以芬兰格式显示日期和时间,这些应用程序仍将使用美国格式显示它们。但这是一个如此大的问题,一定有我遗漏的东西吗?
为了测试这一点,我首先创建了一个WPF-application。该应用程序只打印出 CurrentCulture 和格式化的 DateTime.Now:
private void Culture_Loaded_1(object sender, RoutedEventArgs e)
{
this.Culture.Text = System.Globalization.CultureInfo.CurrentCulture.DisplayName;
}
private void Date_Loaded_1(object sender, RoutedEventArgs e)
{
this.Date.Text = DateTime.Now.ToString();
}
这是我的默认区域设置:
运行时,应用程序以芬兰语格式显示日期:
然后我将区域设置更改为美国:
当应用程序再次运行时,文化和格式发生了变化:
这是我期望的一切工作,这也是我期望 WinRT 应用程序工作的方式。
因此,下一步,我使用相同的代码创建了一个 WinRT(XAML 和 C#)应用程序,并将区域设置恢复为芬兰语。问题:
即使我通过区域设置定义了格式应该是“芬兰语”,WinRT 应用程序也会使用美国格式显示日期时间。然后我修改了应用程序的项目文件并将fi-FI 设为默认语言:
此更改还修改了应用程序的文化:
奇怪的。我将默认语言更改回其默认值,并且格式恢复为美国。然后我在项目中创建了文件夹“Strings - fi-FI”,并在项目中添加了一个空的“Resources.resw”。这个空文件似乎就足够了,因为我现在正在获取芬兰语格式:
一旦我删除了空的资源文件,格式就会恢复为 US:
很奇怪。
这会导致几个问题,但我认为主要的问题是:WinRT 应用程序是否有意不遵循 WPF 应用程序那样的用户区域设置?