У меня возникают некоторые проблемы в приложениях Windows 8 Metro (XAML и С#) в отношении региональных настроек пользователя. Похоже, что приложения не будут соблюдать пользовательские региональные настройки, поэтому даже если ваша Windows 8 будет отображать даты и время в финском формате, приложения будут отображать их с помощью форматирования в формате US. Но это такая большая проблема, что мне что-то не хватает?
Чтобы проверить это, я начал с создания 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 и С#) с тем же кодом и вернул региональные настройки обратно на финский язык. Проблема:
Даже когда я определил в региональных настройках, что форматирование должно быть "финским", приложение WinRT отображает дату и время с форматированием в США. Затем я изменил файл проекта приложения и сделал fi-FI языком по умолчанию:
Это изменение также изменило культуру приложения:
Странно. Я изменил язык по умолчанию на значение по умолчанию, и форматирование было восстановлено в США. Затем я создал папки проекта "Strings-fi-FI" внутри проекта и добавил пустой "Resources.resw" в проект. По-видимому, этого пустого файла достаточно, так как теперь я получаю финское форматирование:
Как только я удалю пустой файл ресурсов, форматы вернутся обратно в США:
Очень странно.
Это приводит к нескольким вопросам, но главное, что я думаю: намерено ли WinRT-приложения не следовать региональным настройкам пользователя, например, приложениям WPF?