SilverLight требуется проверка выбора даты

#silverlight #validation #silverlight-4.0

#silverlight #проверка #silverlight-4.0

Вопрос:

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

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

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

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

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

Ответ №1:

Ответ №2:

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

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