Как применить проверки к WPF datepicker инструментарий? Я хочу это к ошибке, если недопустимая дата выбрана, и в некотором случае у меня есть Прибытие и Даты отбытия, таким образом, я хочу проверить его, чтобы видеть, что дата прибытия не позже даты отбытия.
Кажется, проблема с проверкой выбора даты на год выше была проблемой . Во всяком случае, теперь это работает.
Я не специалист по 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') и принять или отклонить изменение.