2010-05-23 4 views
0

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

Моя проблема в том, что мне нужно вызвать какое-либо действие после того, как свойство изменило его значение, но мне нужно сделать это только тогда, когда изменение происходит от пользовательского интерфейса, потому что в противном случае я не хочу выполнять это действие. У меня возникают некоторые проблемы, потому что, например, когда установлен флажок (двусторонняя привязка), изменяется состояние, мое связанное свойство обновляется, а затем я использую проверенные и нечеткие события, чтобы вызвать это действие. Проблема в том, что когда я изменяю свойство в codebehind также вызывает эти события, и я не хочу этого. Прямо сейчас, я использую флаг, который разрешает или нет действия в обработчиках событий, но я не чувствую, что это хорошая идея.

Любые идеи или идеи? Я рассматриваю возможность использования только односторонней привязки и управления всем своим я, используя команды.

ответ

0

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

Таким образом, если элемент управления изменен так же, как и модель, то это изменение является внутренним, и подтверждение не требуется, но если элемент управления изменен пользователем, тогда состояние управления отличается от модели , и можно подтвердить подтверждение.

+0

Возможно, контроллер управляет событием - это путь. Моя проблема заключается в том, что у меня есть вид меню с некоторыми параметрами, которые необходимо передать в основное представление контента. Если пользователь что-то проверяет, он должен быть передан главному виду. Но также может случиться так, что какой-то процесс на главном экране может триггерные изменения этих параметров в меню. И в этом случае я не хочу запускать события, потому что иначе я бы послал бесполезное и мусорное сообщение на главный вид, потому что это было представление, вызвавшее изменение. – Jay

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