我有一个TextBox绑定到可以为null的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)))
Run Code Online (Sandbox Code Playgroud)
Binding的StringFormat设置为d/MM/yyyy,我已经通过将TextBlock绑定到其StringFormat设置为D的相同属性(长日期格式,它给出的值为'Wednesday, 2012年1月11日').
有没有人有任何想法?
更新:进一步调查(见下面的评论)显示,这似乎是一个问题,与Windows 7相比,Windows 8上的en-AU文化不同,这意味着它以mm/dd格式解释日期,如'1/11' Windows 8,而在Windows 7上,它以dd/mm格式解释它们,这是我在使用en-AU文化时所期望的.