2015-05-06 112 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; 

這應該強制驗證規則來驗證