Как и в любом приложении MVVM WPF, у меня есть несколько моделей представления. У каждого есть несколько команд. В моем представлении реализован пользовательский интерфейс Fluent (лента Office), поэтому некоторые элементы подсвечиваются в зависимости от контекста приложения. Лента является дочерней по отношению к основному приложению.
Базовая структура моего приложения заключается в том, что оно управляет КУРСОМ. В КУРСЕ есть несколько МОДУЛЕЙ, поэтому у меня есть виртуальная машина для курса и модуля... и у каждого есть команды.
Когда приложение загружается, я устанавливаю контекст данных главного окна для курса, поэтому привязка команд курса к ленте выполняется легко и работает нормально.
Проблема возникает, когда пользователь начинает работать с модулем. Когда модуль выбран из списка, подробности отображаются в другом пользовательском элементе управления. Теперь... моя задача состоит в том, как связать команды с лентой.
Я предполагаю, что у меня может быть какой-нибудь обработчик событий, который программно связывает команды текущего модуля со всеми соответствующими элементами управления на ленте и удаляет все, когда контекст исчезает. Но это похоже на много ненужной работы. Есть ли более чистый способ сделать это?
Я думал о маршрутизируемых командах/событиях, но кто-то сказал мне, что это не сработает, потому что они не будут всплывать до самого окна и обратно до ленты.
Ищу здесь какое-то руководство... Я немного новичок в MVVM (но мне это нравится!).