Ваши требования:
- Дерево отображает представление модели
- Узлы в дереве могут отправлять сообщения узлам внутри модели
- Дерево перерисовывается на основе изменений модели
Я не знаю точно, с какими данными вы здесь работаете, но иерархическая модель - довольно простая вещь. Я приму это как данность, вы знаете, как перебирать иерархические данные и заполнять древовидное представление.
Ваш контроллер должен иметь функции-члены для отправки сообщений в модель. Параметры должны быть элементом модели и сообщением, которое вы хотите отправить. Таким образом, пользовательский интерфейс полностью не знает, как сообщение попадает в элемент, но может получать сообщения через него.
Последнее требование является более сложным и зависит от нескольких вещей (например, времени жизни контроллера, архитектуры приложения и т. Д.) Я собираюсь предположить, что контроллер живет столько же, сколько и древовидное представление. Если это так, то ваш контроллер должен предоставить способ установить обратный вызов при изменении модели. Затем, когда контроллер меняет модель, он может выполнить обратный вызов к пользовательскому интерфейсу, не зная об этом пользовательском интерфейсе.