Отметить Silverlight DataForm.DataField как недействительный? - PullRequest
1 голос
/ 03 июня 2010

Хорошо, это должно быть очень простым делом, и я либо что-то упустил, либо ошибаюсь.

Факты:

  1. Silverlight 4, используя инструментарий и используя DataForms / DataFields, но НЕ используя сводку проверки.

  2. Использование шаблонной формы данных, простая форма нового / редактируемого пользователя с обычными полями, такими как имя пользователя, имя и т. Д., Плюс пароль и подтверждение пароля.

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

  4. Если проверка не удалась в # 3, тогда предупредите пользователя, поместив обычные подсказки в поле Пароль. (красная рамка, сообщение при нажатии в поле)

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

Кто-нибудь еще сделал это, или они могут отправить мне пример формы данных с полями пароля, в которых не используется Сводка проверки, чтобы я мог видеть, как они ее решили?

Мои две текущие опции, которые я вижу, должны вручную пометить поле данных. ИЛИ я создам свой собственный метод отображения ошибок в полной форме, который не повторяет ошибок, как это делает сводка проверки. (IE, мне нужна сводка проверки, которая показывает ТОЛЬКО ошибки формы, а не ошибки поля.)

Спасибо

1 Ответ

3 голосов
/ 06 июня 2010

Хорошо, я решил эту проблему. Вот несколько советов:

  1. В коде .cs моего xaml я проверял свой объект, вызывая TryValidate для моего объекта. Это не очень хорошая идея, если вы НЕ используете встроенные кнопки команд DataForm. Если вы используете свои собственные пользовательские кнопки, обязательно вызовите метод DataForm.ValidateItem (), чтобы убедиться, что все ошибки правильно выводятся в ValidationSummary. (в моем случае ничто так и не добралось до контрольной суммы, так как у меня не было формы для проверки.)

  2. Вы можете указать ValidationSummary, чтобы отображались только ошибки уровня объекта. (Ошибки свойств по-прежнему отображаются, но только в поле.) Для этого назначьте так:

    myDataform.ValidationSummary.Filter = ValidationSummaryFilters.ObjectErrors;

См. ValidationSummaryFilters для получения дополнительной информации.

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

...