2010-06-03 1 views
1

Хорошо, это должно быть очень просто, и я либо что-то пропускаю, либо ошибаюсь.Отметьте SilverForm DataForm.DataField как недействительный?

Факты:

  1. Silverlight 4, используя инструментарий и использование форм данных/поля данных, но не использует резюме проверки.

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

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

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

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

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

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

Благодарности

+0

Я столкнулся с аналогичной проблемой. Однако я использую «Регистрационную форму пользователя», и я пытаюсь сделать так, чтобы администратор мог изменить пароль пользователя, пароль и ответ. Логика должна состоять в том, что если поля (любое из этих 4 полей) заполнены, все они должны существовать. Вы хотите опубликовать код, который показывает, как удалить поле из проверяющего события? Это было бы очень полезно! – bleepzter

ответ

3

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

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

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

    myDataform.ValidationSummary.Filter = ValidationSummaryFilters.ObjectErrors;

Дополнительную информацию см. В разделе ValidationSummaryFilters.

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