Если бы я был вами, я бы выставлял события через интерфейс вашего взгляда. Это позволит вам сделать контроллер центральным для всего взаимодействия.
Контроллер загружается первым и создает экземпляр представления, я бы использовал внедрение зависимостей, чтобы вы не создавали зависимость для самого представления, а только для интерфейса.
Контроллер получит доступ к модели и загрузит данные в представление.
Контроллер будет связываться с событиями, определенными в интерфейсе представления.
Затем контроллер будет обрабатывать сохранение данных обратно в модель через событие.
Если вы хотите, вы также можете использовать брокер событий, который лишит вас необходимости объявлять интерфейс для каждого представления. Таким образом, вы можете привязать события к атрибутам.
В результате контроллер останется зависимым от модели и интерфейса представления, а представление зависит только от данных, а модель не будет иметь зависимостей.
Некоторые примеры описанного выше дизайна можно найти в CAB и на фабрике программного обеспечения Smart Client Ссылка на Smart Client . Они используют шаблон MVP, но его можно одинаково легко применить к шаблону MVC.