Проверка средства выбора даты WPF

Как применить проверки к WPF datepicker инструментарий? Я хочу это к ошибке, если недопустимая дата выбрана, и в некотором случае у меня есть Прибытие и Даты отбытия, таким образом, я хочу проверить его, чтобы видеть, что дата прибытия не позже даты отбытия.

9
задан developer 9 April 2010 в 20:59
поделиться

1 ответ

Кажется, проблема с проверкой выбора даты на год выше была проблемой . Во всяком случае, теперь это работает.

Я не специалист по 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>

указать шаблон управления при возникновении ошибки проверки. По умолчанию ошибка проверки меняет цвет границы. Я использовал дополнительную всплывающую подсказку, когда мышь находится над контролем.

alt text

исходный код

О проверке «от средства выбора до средства выбора».

Я знаю, что можно использовать настраиваемые свойства в правилах проверки (см. AgeRangeRule в примере msdn )

Возможно, вам следует использовать эту функцию, как это

<local:MaxDateRule MaxDate="{Binding ElementName=DepartureDatePicker, Path=SelectedDate" />

, но для применения привязки вам необходимо сделайте MaxDate DependencyProperty .. вы должны определенно спросить гуру;)

Вместо выделения вам следует рассмотреть возможность перехвата изменения значения datepicker (через какое-то событие datepicker 'onchange') и принять или отклонить изменение.

8
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: