【发布时间】:2012-09-24 07:14:58
【问题描述】:
我在 Windows 8 Metro 应用程序(XAML 和 C#)中遇到了一些关于用户区域设置的问题。似乎应用程序不会尊重用户的区域设置,因此即使您的 Windows 8 设置为以芬兰格式显示日期和时间,应用程序仍将使用美国格式显示它们。但问题这么大,一定是我遗漏了什么?
为了测试这一点,我首先创建了一个 WPF 应用程序。应用程序只打印出 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”。这个空文件似乎已经足够了,因为我现在得到的是芬兰语格式:
一旦我删除了空资源文件,格式就会恢复为美国格式:
很奇怪。
这导致了几个问题,但我认为主要的问题是:WinRT 应用程序是否有意不遵循 WPF 应用程序那样的用户区域设置?
【问题讨论】:
标签: c# xaml windows-runtime currentculture windows-store-apps