WPF DatePicker - 自动更正选项

时间:2014-09-08 11:40:28

标签: wpf vb.net datepicker culture date-formatting

我有一个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,然后按照我上面的指定格式化它),但它忽略了我的电脑的事实。文化是en-GB。

例如,如果我输入

07/10/1988

它自动更正

1988-07-10

即将月份设置为7,将日期设置为10 - 这不是我的PC&#34; en-GB&#34;文化 - 期望1988-10-07指定yyyy-MM-dd格式。

如果我输入

23/05/2007

DatePicker显示错误,而不是正确解析。

有没有办法手动设置datepicker(或者通常是应用程序中的所有Date.Parse调用)的文化,以匹配我的PC甚至在所有情况下指定en-GB?< / p>

编辑 - 更多信息

DirectCast(dtp_FilterByDate.Template.FindName("PART_TextBox", dtp_FilterByDate), TextBox)

告诉我语言是&#34; en-US&#34; - 但我不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

好的,我意识到我可以更新我的风格来做到这一点。

执行以下操作:

<TextBox x:Name="PART_TextBox" Text="{...}" Language="en-GB"/>