Кажется, год выше проверки выбора даты была проблема . Во всяком случае, теперь это работает.
Я не специалист по 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()");
}
}
тогда вы можете прикрепить его к DatePicker
<!-- 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>
указать шаблон элемента управления при возникновении ошибки проверки. По умолчанию ошибка проверки изменяет цвет границы. Я использовал дополнительную всплывающую подсказку, когда мышь находится над контролем.
исходный код
О проверке сборщика.
Я знаю, что в правилах проверки можно использовать пользовательские свойства (см. AgeRangeRule в примере msdn )
Может быть, вы должны использовать эту функцию, как это
<local:MaxDateRule MaxDate="{Binding ElementName=DepartureDatePicker, Path=SelectedDate" />
но для того, чтобы применить привязку, вам нужно сделать MaxDate DependencyProperty .. вы должны обязательно спросить гуру;)
Вместо выделения следует рассмотреть возможность перехвата изменения значения DatePicker (с помощью какого-либо события datepicker 'onchange') и принять или отклонить изменение.