2015-05-06 151 views
0

我想使用验证规则在XAML中验证日期。C#WPF,日期选择器验证

<StackPanel Grid.Column="0" Grid.Row="1" Orientation="Horizontal"> 
    <DatePicker Height="25" x:Name="DatePickerDate"> 
     <DatePicker.SelectedDate> 
      <Binding Path="ViewModel.Date" NotifyOnValidationError="True"> 
       <Binding.ValidationRules> 
        <validationRules:DatePickerValidationRule/> 
       </Binding.ValidationRules> 
      </Binding> 
     </DatePicker.SelectedDate> 
    </DatePicker> 
</StackPanel> 

和验证规则

public class DatePickerValidationRule : ValidationRule 
{ 
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) 
    { 
     var date = (DateTime) value; 

     return date.Date.CompareTo(DateTime.Now) < 0 
      ? new ValidationResult(false, "the date can not be before today") 
      : new ValidationResult(true, null); 
    } 
} 

但是当我把断点到验证规则,它永远不会去那里,即使我改日期。

由于我是WPF的新手,如果有任何建议或指导可以在这里获得,这将是可观的。

谢谢。

+0

有你看着[这](http://stackoverflow.com/a/2616392/773118)回答? – Eirik

+0

[日期选择器验证WPF]的可能的重复(http://stackoverflow.com/questions/2610883/date-picker-validation-wpf) – Abhishek

回答

1

有同样的问题,我想我应该分享我的解决方案:

我做了一个静态的最小日期限制所以才规定BlackoutDates

<DatePicker SelectedDate="{Binding StartDate}" Name="DepartureDate"> 
    <DatePicker.BlackoutDates> 
     <CalendarDateRange Start="1/1/0001" End="12/31/1969"/> 
    </DatePicker.BlackoutDates> 
</DatePicker> 

但是如果你需要一个更有活力的解决方案,您可以考虑this solution

+1

感谢分享,但我实际上不记得我是如何解决它的。应该已经发布我的解决方案,所以谢谢:) – xfrog

+0

没问题,我发布的可怜的开发人员必须这样做,但不知道有关记录非常详细/命名为BlackoutDates。 – xanth

0

内,您的保存()函数

this.DatePickerDate.SelectedDate = this.DatePickerDate.SelectedDate; 

这应该强制验证规则来验证