我有一个绑定(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/

10-11 01:53
查看更多