SilverLight требуется проверка даты выбора - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть пользовательский элемент управления SL4.Он содержит DatePicker.Элемент управления предоставляет свойство зависимости DateTime (не обнуляемое, потому что это обязательное поле).Я связал SelectedDate объекта DatePicker (который является Nullable ) с этим свойством DateTime {RelativeSource Self}, как двусторонний.Эта привязка работает, за исключением случаев, когда я вводю нулевую дату в DatePicker.Привязка устанавливается с помощью ValidatesOnExceptions, поэтому граница DatePicker становится красной, но во всплывающей подсказке говорится, что «ввод не в правильном формате».Но следует сказать, что поле является обязательным.

Я попробовал пользовательский IValueConverter, который выдал исключение (ValidationException, FormatException, InvalidOperationException и т. Д.) С пользовательским текстом, но все они оказались необработанными.

Я знаю, что мой элемент управления может реализовывать INotifyDataErrorInfo, но проблема в том, что нулевое значение даже не попадает в мой элемент управления, так как мой DateTime не обнуляется, поэтому проверять нечего.

Я мог былегко сделать это без каких-либо обязательств.Или связав со скрытым свойством Nullable в моем элементе управления, подтвердив, что это свойство не является нулевым, и выставив другое свойство DateTime.Или предоставив ValueConverter, который преобразует значение NULL в DateTime.MinValue или что-то в этом роде.

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

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011
1 голос
/ 14 апреля 2011

Вы в основном должны сделать значение, которое привязываете свой DatePicker к обнуляемому DateTime, даже если null не является допустимым значением.

Тогда вам просто нужно полагаться на логику проверки, чтобы гарантировать, что ваше приложение никогда не разрешит обработку / сохранение / что-либо еще, пока значение не будет равно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...