我有一个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类型的属性,它返回实际日期。
答案 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"/>