2011-12-23 2 views
1

У меня есть форма, на которой есть три кнопки: Сохранить, Утвердить и Отклонить.Различные правила валидации для разных действий

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

Один из подходов заключается в проверке методов CanSave и CanApprove (кнопки привязаны к ICommand в ViewModel). Проблема здесь в том, что кнопки отключены, но нет указания, какие поля необходимо заполнить, чтобы включить определенную кнопку.

В идеале все кнопки должны быть включены все время и выполнять проверку при нажатии кнопки. Но как я могу пометить поля как недействительные с VM?

+0

У вас есть код, который вы написали или попробовали до сих пор ..? – MethodMan

ответ

1

Попробуйте добавить что-то вроде объекта LastStateValidated на свой класс и на основе вашего IDataErrorInfo валидации.

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

При попытке выполнить команду государство изменится, и это приведет к тому, что IDataErrorInfo будет проверяться по-разному, поэтому будут обнаружены различные ошибки проверки, основанные на последнем действии, которое пользователь пытался выполнить.

+0

Большое спасибо за простое и элегантное решение :) –

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