Обработка событий из общего контроля в MVC - PullRequest
3 голосов
/ 19 января 2009

В приложении, над которым я работаю, я реализовал шаблон MVC, чтобы использовать различные представления для отображения частей пользовательского интерфейса. В общем пользовательском интерфейсе есть поле ввода, в котором пользователь может давать команды или запросы. Идея состоит в том, что это поле ввода генерирует несколько основных событий, таких как «ValidEntry», «InvalidEntry» и «EmptyEntry». Каждая из частей контроллера должна реагировать на эти события. Я не хочу, чтобы каждый контроллер, который подписан на событие ValidEntry, отвечал, только тот, который активен.

Я мог бы добавить «если» к каждому обработчику событий, который проверяет, является ли «this.IsActive» истинным, и обновлять это при каждом переключении представлений. Или добавить разные события для всех разных контроллеров. Есть лучшие идеи по этой проблеме?

Ответы [ 3 ]

1 голос
/ 19 января 2009

Не уверен, что все «виды» все видны и фокус изменяется, или они скрыты, когда они не активны, но наличие «одного контроллера, который контролирует их все» отслеживает видимость или фокус и подписывается / отписать данные субконтроллеры на события, наверное, как бы я это реализовал. С интерфейсами / абстрактными классами вы сможете сделать это в общем.

1 голос
/ 20 января 2009

Для таких событий, как ValidEntry, когда требуется, чтобы реагировал только один контроллер, самый простой способ - «понизить» его до делегата и назначить его обработчику активного контроллера всякий раз, когда он получает фокус.

Конечно, менеджер, отслеживающий видимость и подписку, определенно даст лучшую структуру, когда это простое требование становится сложным. Но пока это излишество :) 1003 *

1 голос
/ 19 января 2009

Если предположить, что одновременно активен только 1 контроллер, как насчет наличия некоторого класса диспетчера контроллеров с помощью метода SetActiveController Менеджер будет подписываться на события пользовательского интерфейса и вызывать метод Approproate на текущем активном контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...