如何对WPF日期选择器工具应用验证?如果选择了无效的日期,我希望它会出现错误。在某些情况下,我有到达和离开日期,所以我想验证一下到达日期不晚于离开日期。
看起来一年前日期选择器的验证出了问题。不管怎样,现在它可以用了。
我不是WPF专家,但我会尝试给你一个想法
编写一个验证规则
public class DateExpiredRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
DateTime orderDate = (DateTime)value;
return new ValidationResult(orderDate < DateTime.Now, "Please, enter date before Now()");
}
}
<!-- since validation works hand by hand with binding,
I use hidden datepicker as binding source -->
<WPFToolkit:DatePicker Name="dateProvider" Visibility="Collapsed">
</WPFToolkit:DatePicker>
<WPFToolkit:DatePicker Name="notExpired">
<WPFToolkit:DatePicker.SelectedDate>
<Binding ElementName="dateProvider" Path="SelectedDate" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:DateExpiredRule/>
</Binding.ValidationRules>
</Binding>
</WPFToolkit:DatePicker.SelectedDate>
</WPFToolkit:DatePicker>
当验证错误发生时,指定控件模板。默认情况下,验证错误会更改边框颜色。我在鼠标悬停在控件上时使用了额外的工具提示。
关于“选择器到选择器”的验证。
我知道可以在验证规则中使用自定义属性(请参见msdn示例中的AgeRangeRule)。
也许你应该像这样使用这个功能。
<local:MaxDateRule MaxDate="{Binding ElementName=DepartureDatePicker, Path=SelectedDate" />
但是为了应用绑定,您需要将MaxDate设置为DependencyProperty.. 您应该确实向专家询问;)
与其突出显示,您应该考虑拦截日期选择器值更改(通过某种类型的日期选择器“onchange”事件),并接受或拒绝更改。