Ho un controllo TextBox associato a una proprietà DateTime nullable.Inserimento della data nel formato d/mm in TextBox
Sono in Australia, quindi desidero le date presentate nel formato gg/mm/aaaa.
Sulla mia casella di Windows 7, che può entrare la data nel formato d/mm, ed è convertito correttamente (ad es. 1/11 converte al 1 ° novembre, 13/1 converte al 13 gennaio etc.)
Sul mio Windows 8, lo stesso input è interpretato come se fosse nel formato USA, quindi 1/11 convertito all'11 gennaio e 13/1 non riesce (poiché non c'è il 13 ° mese).
Entrambi i computer sono impostati per utilizzare i formati australiane, e ho questo codice nell'evento Application.StartUp:
FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement), New FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)))
StringFormat del Binding è impostato su d/MM/yyyy, e ho controllato che ciò sia corretto anche legando un TextBlock alla stessa proprietà che ha il suo StringFormat impostato su D (il formato di data lunga, che fornisce valori come "mercoledì 11 gennaio 2012").
Qualcuno ha qualche idea?
Aggiornamento: Ulteriori indagini (vedere i commenti di seguito) rivela che questo sembra essere un problema con la cultura en-AU che è diversa su Windows 8 rispetto a Windows 7, il che significa che interpreta date come '1/11' in formato mm/dd su Windows 8, mentre su Windows 7, li interpreta in formato dd/mm, che è quello che mi aspetterei quando utilizzo la cultura en-AU.
Altre cose che ho provato: impostazione 'xml: lang =" en-AU "' sulla finestra principale, impostazione 'ConverterCulture = en-AU' sul Binding. Nessuno dei due ha funzionato ... (non c'è un convertitore su Binding, ma ho pensato di provarlo lo stesso) – Charles
'DateTime.Parse (" 1/11 ", CultureInfo.GetCultureInfo (" en-AU ")). Month' restituisce 11 su Windows 7, ma 1 su Windows 8 - questo non è più un bug WPF ... – Charles
E se l'utente fr? – Paparazzi