我有一个绑定(bind)到可为null的DateTime属性的TextBox。
我在澳大利亚,所以我希望日期以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绑定(bind)到将StringFormat设置为D的同一属性(长日期格式,其值类似于“星期三, 2012年1月11日”)。
有人有什么想法吗?
更新:进一步的调查(请参阅下面的评论)表明,这似乎是一个问题,因为与Windows 7相比,Windows 8上的en-AU文化有所不同,这意味着它以mm/dd格式解释“1/11”格式在Windows 8上使用,而在Windows 7上则以dd/mm格式进行解释,这正是使用en-AU文化时所期望的。
最佳答案
由于不建议使用IetfLanguageTag,您是否考虑过使用Name属性?
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.ietflanguagetag.aspx:
关于.net - 在文本框中以d/mm格式输入日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13214749/