Я начинаю свой первый набег в мир Prism v4/MVVM с MEF и WPF. Я успешно создал оболочку и, используя MEF, я могу обнаружить и инициализировать модули. Однако я не уверен относительно правильного способа навигации по представлениям, представленным этими модулями.
Например, скажем, что один из модулей предоставляет три вида, и я хочу отобразить навигацию к этим представлениям в элементе управления меню. До сих пор я успешно просмотрел представление, основанное на MenuItem
, и этот MenuItem
содержит дочерние элементы MenuItem
, таким образом предоставляя иерархию команд, которая может быть использована. Отлично.
Вещь, это кажется неправильным. Я теперь заявляю в своем модуле, что навигация (и, следовательно, оболочка) ДОЛЖНА поддерживать использование меню. Что делать, если я хочу перейти на использование ToolBar
или даже Ribbon
. Затем мне пришлось бы изменить все мои модули, чтобы отобразить соответствующие типы управления для оболочки.
Я посмотрел вокруг, и на некоторых сайтах есть ссылка на "Сервис", чтобы обеспечить навигацию, при которой во время инициализации модуля в службу добавляются параметры навигации, которые, в свою очередь, используются оболочкой для отображения этого навигация в любом формате, который он хочет (ToolBar
, TreeView
, Ribbon
, MenuItem
и т.д.) - но я не могу найти примеров того, как это сделать.
Чтобы представить все это в перспективе, я, в конечном счете, хочу, чтобы иметь возможность выбирать виды из меню и/или другого элемента управления навигацией (возможно, Ribbon
), а затем открывать эти представления по требованию в TabControl. Я уже получил возможность создавать представления в TabControl
во время инициализации модуля, теперь мне нужен следующий шаг.
Что мне нужно знать, так это: что было бы правильным способом разоблачить варианты навигации таким образом, чтобы не настаивать на поддержке определенного элемента управления оболочкой, и если услуга - это путь, то как можно было бы объединить это в шаблоны Prism/MVVM.
Заранее благодарим за любую информацию, которую вы можете предложить.