WPF DatePicker По умолчанию в американском стиле вместо британского - PullRequest
3 голосов
/ 20 октября 2011

Я использую DatePicker в своей форме WPF, и у меня возникает проблема, заключающаяся в том, что когда пользователь вводит дату в британском формате, то есть 31.12.1980, WPF, кажется, хочет преобразовать ее в американскую, поэтому он читает/31/1980.

Это дает мне исключение вне диапазона на моей вставке SQL.

Кто-нибудь сталкивался с этим раньше, и если да, то как вы это исправили?

Ответы [ 2 ]

7 голосов
/ 20 октября 2011

Необходимо убедиться, что в пользовательском интерфейсе указан правильный языковой стандарт.

Я не уверен насчет WPF, но я знаю, что в Silverlight есть ошибка, из-за которой XAML не соблюдает языковой стандартОкна.Вы должны включить следующий код в конструктор представления:

// Get "StringFormat=c" to honour culture settings.
// From http://timheuer.com/blog/archive/2010/08/11/stringformat-and-currentculture-in-silverlight.aspx
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);

Теперь, если ваш компьютер не настроен на en-GB, но ваше приложение требует этого, вам нужно принудительно заставить язык либоустановка CurrentCulture потока приложения или передача "en-GB".

0 голосов
/ 20 октября 2011

Способы реализации этого (многозначительного) подхода:

  • Установить сведения о культуре в конфигурационном файле
  • Хранить различные (при необходимости) форматы даты (например, в другой стране и / или культуре) в стандартном месте, например, в файле ресурсов или конфигурации (может также быть в файле XML) и использовать эти сохраненные настройки при запуске / основном исполнении
  • Пример кода: -

    System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-GB");
    
    cultureInfo.DateTimeFormat.ShortDatePattern = ConfigurationManager.AppSettings["DateFormat_UK"];
    
    System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
    
  • Можно также рассмотреть вопрос о предоставлении контролируемого администратором модуля

...