У меня есть TextBox, связанный с нулевым свойством DateTime.
Я в Австралии, поэтому мне нужны даты, представленные в формате d/mm/yyyy.
В моем окне Windows 7 я могу ввести дату в формате d/mm и правильно преобразовать (например, 1/11 конвертирует до 1 ноября, 13/1 конвертирует в 13 января и т.д.).
В моем окне Windows 8 тот же ввод интерпретируется так, как если бы он был в формате США, поэтому 1/11 конвертируется в 11 января, а 13/1 терпит неудачу (поскольку 13-го месяца нет).
Оба компьютера настроены на использование австралийских форматов, и у меня есть этот код в событии Application.StartUp:
FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement), New FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)))
Binding StringFormat установлен в d/MM/yyyy, и я проверил, что это правильно, также привязывая TextBlock к тому же свойству, у которого его StringFormat установлен в D (формат длинной даты, который дает такие значения, как "Среда, 11 января 2012 года" ).
Есть ли у кого-нибудь идеи?
Обновление: Дальнейшее расследование (см. комментарии ниже) показывает, что это, по-видимому, проблема с тем, что культура Windows AU отличается от Windows 7 по сравнению с Windows 7, что означает, что она интерпретирует даты типа " 1/11 'в формате mm/dd в Windows 8, тогда как в Windows 7 он интерпретирует их в формате dd/mm, чего я ожидаю при использовании культуры en-AU.