2011-04-13 2 views
2

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

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

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

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

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

ответ

1

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

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

Смежные вопросы