在TextBox中以d/mm格式输入日期

Cha*_*les 10 .net cultureinfo windows-8 .net-4.5

我有一个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文化时所期望的.

小智 1

由于 IetfLanguageTag 已被弃用,您是否考虑过使用 Name 属性来代替?

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.ietflanguagetag.aspx

IETF 语言标记的格式与 Name 属性返回的区域性名称类似,但不唯一地标识区域性。也就是说,如果不同的文化具有相同的语言特征,则这些文化共享相同的 IETF 语言标签。