我有一个 TextBox 绑定到一个可为空的 DateTime 属性。
我在澳大利亚,所以我希望以 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)))
Binding 的 StringFormat 设置为 d/MM/yyyy,并且我通过将 TextBlock 绑定到 StringFormat 设置为 D 的相同属性(长日期格式,它给出的值如“星期三, 2012 年 1 月 11 日')。
有没有人有任何想法?
更新:进一步调查(见下面的评论)表明这似乎是一个问题,与 Windows 7 相比,Windows 8 上的 en-AU 文化不同,这意味着它以 mm/dd 格式解释像“1/11”这样的日期Windows 8,而在 Windows 7 上,它以 dd/mm 格式解释它们,这是我在使用 en-AU 文化时所期望的。