Mam pole TextBox powiązane z właściwością DateTime podlegającą zerowaniu.Wprowadzanie daty w formacie d/mm w TextBox
Jestem w Australii, więc chcę dat przedstawionych w formacie d/mm/rrrr.
Na moim Windows 7 polu można wprowadzić datę w formacie d/mm, a to przeliczone prawidłowo (np. 1/11 konwertuje do 1 listopada, 13/1 konwertuje do 13 stycznia etc.)
W moim Windows 8 to samo wejście jest interpretowane tak, jakby było w formacie amerykańskim, więc 1/11 konwertuje na 11 stycznia, a 13/1 kończy się niepowodzeniem (ponieważ nie ma 13 miesiąca).
Oba komputery są skonfigurowane do korzystania z australijskich formatów i mam ten kod w zdarzeniu Application.StartUp:
FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement), New FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)))
StringFormat Oprawa jest ustawiony na D/mm/rrrr, a ja sprawdziłem że jest to poprawne, wiążąc także TextBlock z tą samą właściwością, która ma ustawiony StringFormat na D (format długiej daty, który daje wartości takie jak "Środa, 11 stycznia, 2012").
Czy ktoś ma jakieś pomysły?
Aktualizacja: Dalsze badania (patrz komentarz poniżej) wynika, wydaje się to być problem z kultury en-AU inności na Windows 8 w porównaniu do Windows 7, co oznacza, że interpretuje termin jak „1/11” w formacie mm/dd w systemie Windows 8, podczas gdy w systemie Windows 7 interpretuje je w formacie dd/mm, czego oczekiwałbym, używając kultury en-AU.
Inne rzeczy, które wypróbowałem: ustawienie 'xml: lang =" en-AU "' w oknie macierzystym, ustawienie 'ConverterCulture = en-AU' na bindowaniu. Żaden nie działał ... (nie ma konwertera na Binding, ale pomyślałem, że i tak spróbuję) – Charles
'DateTime.Parse (" 1/11 ", CultureInfo.GetCultureInfo (" en-AU ")). Month' daje 11 na Windows 7, ale 1 na Windows 8 - to już nie jest błąd WPF ... – Charles
Co jeśli użytkownik fr? – Paparazzi