【发布时间】:2014-09-08 11:40:28
【问题描述】:
我有一个 WPF DatePicker 对象。
<DatePicker Name="dtp_FilterByDate" />
和
<Application.Resources>
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Text" Value="Filter by date..." />
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<TextBox x:Name="PART_TextBox"
Text="{Binding Path=SelectedDate, StringFormat = {}{0:yyyy-MM-dd}, FallbackValue='1900-01-01', TargetNullValue='Enter a date...',
RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
当我在框中手动输入日期时,它会自动更正它(我知道它使用 Date.Parse 然后按照我上面指定的方式对其进行格式化),但它忽略了我的 PC 的文化是 en-GB 的事实。
例如,如果我输入
07/10/1988
它会自动更正为
1988-07-10
即将月份设置为 7 并将日期设置为 10 - 这对于我的 PC 的“en-GB”文化来说不是预期的行为 - 对于指定的 yyyy-MM-dd 格式,它期望 1988-10-07。
如果我进入
23/05/2007
DatePicker 显示错误,而不是正确解析。
有没有办法手动设置日期选择器(或通常为应用程序中的所有 Date.Parse 调用)的区域性,以匹配我的电脑,甚至在所有情况下都指定 en-GB?
编辑 - 更多信息
DirectCast(dtp_FilterByDate.Template.FindName("PART_TextBox", dtp_FilterByDate), TextBox)
显示语言是“en-US” - 但我不知道为什么会这样。
【问题讨论】:
标签: wpf vb.net datepicker culture date-formatting