DatePicker奇怪的验证

时间:2013-03-18 20:28:31

标签: c# wpf datetime datepicker

我有一个DatePicker,通过以下XAML定义:

<DatePicker Grid.Row="3" Grid.Column="1" Margin="4" 
    Text="{Binding Birthday, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    DisplayDateStart="01.01.1900" DisplayDateEnd="{Binding CurrentDate, Mode=OneTime}"/>

如果我选择像'02 .03.1979这样的日期'一切都很好。但是,如果我选择'27 .12.1979',DatePicker的Field将获得一个红色边框。我没有对此日期进行验证。

为什么有些日期是红色的?

Birthday是Datetime类型的属性。 Currendate是DateTime类型的属性,它返回实际日期。

3 个答案:

答案 0 :(得分:0)

您的xaml代码没问题。如果要对多个DatePicker使用相同的DateTime格式,请将此代码段添加到启动窗口 - 您可以编辑该模式:

Thread.CurrentThread.CurrentCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "dd. MMM. yyyy";  

答案 1 :(得分:0)

我通过绑定到DisplayDate而不是Text来解决了这个问题。代码现在看起来像:

<DatePicker Grid.Row="3" Grid.Column="1" Margin="4" 
DisplayDate="{Binding Birthday, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
DisplayDateStart="01.01.1900" DisplayDateEnd="{Binding CurrentDate, Mode=OneTime}"/>

答案 2 :(得分:-1)

如果您不特别关注日期值的顺序,请尝试使用

<DatePicker Grid.Row="3" Grid.Column="1" Margin="4" 
    Text="{Binding Birthday, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    DisplayDateStart="01.01.1900" DisplayDateEnd="{Binding CurrentDate, Mode=OneTime}" Format="Custom" FormatString="MMM dd yyyy"/>