Расположение сообщения проверки Silverlight

#silverlight #validation #exception-handling

#silverlight #проверка #обработка исключений

Вопрос:

При использовании обработки проверки по умолчанию в Silverlight (используя ValidatesOnExceptions=True,NotifyOnValidationError= True ),
вы обычно получаете сообщение об исключении в сторону текстового поля.

Я хотел бы изменить местоположение сообщения проверки (сообщения об исключении) и поместить его в верхнюю часть текстового поля. Любые идеи о том, как я могу это сделать. Я не смог найти никакой литературы по изменению местоположения сообщения об ошибке в сети.

Ответ №1:

Это (IMO) печальный недосмотр в пользовательском интерфейсе проверки по умолчанию. У вас должен быть способ указать значение размещения всплывающей подсказки, вместо этого значение размещения фиксируется в шаблоне как «Правильное».

Следовательно, чтобы изменить это, вам нужно посетить этот раздел MSDN «Стили и шаблоны текстовых полей», сделать копию TextBox стиля по умолчанию и ссылки «ValidationToolTipTemplate». Добавьте их в новый ResourceDictionary файл и присвоите значение TextBox Style ключа. Теперь вы можете настроить Placement свойство всплывающей подсказки проверки в шаблоне текстового поля.

Включите этот новый ResourceDictionary словарь как объединенный либо в свой App.Xaml, либо в ресурсы UserControl / Page и назначьте этот стиль своему TextBox Style свойству.

Чрезмерная возня с простым изменением, но другого пути нет. С другой стороны, теперь, когда они есть в вашем собственном коде, вы можете выполнять всевозможные другие действия со стилем текстового поля и / или всплывающей подсказкой проверки.

Комментарии:

1. Во всяком случае, я чувствую, что такого рода вещи — это скорее недосмотр в дизайнере Visual Studio. Внесение такого рода изменений намного проще в Expression Blend. Щелкните правой кнопкой мыши на шаблоне объекта -> редактировать копию, и вы получите весь шаблон для редактирования.

2. @Brandorf: Если бы VS сделал все, что мог Blend, как бы MS смогла продать выражение? 😉

3. Спасибо, Энтони.. Моя проблема решена. Я загрузил представление silverlight по адресу gist.github.com/1276226 для всех, кто ищет помощи по этому вопросу.