我已將文本框綁定到可爲空的DateTime屬性。在文本框中以d/mm格式輸入日期
我在澳大利亞,所以我想以d/mm/yyyy格式顯示日期。
在我的Windows 7中,我能進入d/mm格式的日期,它的正確轉換(例如1/11轉換爲11月1日,第13/1號轉換爲1月13日等)
在我的Windows 8中,相同的輸入被解釋爲美國格式,所以1/11轉換爲1月11日,13/1失敗(因爲沒有13個月)。
兩臺計算機都設置爲使用澳大利亞的格式,我有這樣的代碼在Application.StartUp事件:
FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement), New FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)))
綁定的的StringFormat設置爲d/MM/YYYY,而我檢查通過將TextBlock綁定到將其StringFormat設置爲D的相同屬性(長日期格式,該值爲'2012年1月11日星期三'),這是正確的。
有沒有人有任何想法?
更新:進一步調查(見下文評論)顯示這似乎是與EN-AU文化是在Windows 8上的不同相對於Windows 7,這意味着它解釋日期,如「1/11」的問題在Windows 8上以mm/dd格式顯示,而在Windows 7上,它以dd/mm格式解釋它們,這是我在使用en-AU文化時所期望的。
我試過的其他東西:在父窗口設置'xml:lang =「en-AU」',在綁定上設置'ConverterCulture = en-AU'。沒有工作......(綁定上沒有轉換器,但我想我會試試它) – Charles
'DateTime.Parse(「1/11」,CultureInfo.GetCultureInfo(「en-AU」))。 Month'在Windows 7上有11個,但在Windows 8上有1個 - 這不是WPF錯誤... – Charles
如果你用戶fr? – Paparazzi