null可能なDateTimeプロパティにTextBoxをバインドしました。日付をd/mm形式でTextBoxに入力する
私はオーストラリアにいるので、日付はd/mm/yyyy形式で表示します。私のWindows 7のボックスで
が、私はD/MM形式で日付を入力することができ、それが正しく変換されます(例えば1/11は、11月1日に変換し、13/1は、1月13日などに変換します)私のWindows 8のボックスでは、同じ入力がUS形式であるかのように解釈されるため、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をDに設定されたStringFormat( 'Wednesday、11 January、2012'のような値を持つ長い日付形式)を持つ同じプロパティにバインドすることによっても正しいことを意味します。
誰にもアイデアはありますか?
更新:更なる調査(以下のコメントを参照)は、これがWindows 7と比較してWindows 8で異なるen-AUカルチャの問題であることを明らかにしています。つまり、 '1/11' Windows 8ではmm/dd形式で、Windows 7ではd-d/mm形式で解釈します。これはen-AUカルチャを使用するときに期待されるものです。
私が試したその他のこと:親ウィンドウに 'xml:lang =" en-AU "を設定し、バインディングに' ConverterCulture = en-AU'を設定してください。どちらもうまくいきませんでした...(バインディングにコンバーターはありませんが、とにかく試してみました) – Charles
'DateTime.Parse(" 1/11 "、CultureInfo.GetCultureInfo(" en-AU "))。月はWindows 7では11を返しますが、Windows 8では1になります - これはWPFのバグではありません。 – Charles
あなたはユーザーですか? – Paparazzi