Призма - может ли деактивация вида повлиять на другие части модуля?

У меня есть идея для приложения, в которой я не уверен, возможно ли это, я был бы признателен за ваше понимание:

Я хотел бы иметь ToolBar в моем Shell, где каждый загруженный модуль может добавлять свои кнопки. Shell также будет иметь области содержимого, которые показывают соответствующие представления модулей.
Однако некоторые модули используют одни и те же области, есть ли в Prism механизм, который может помочь с удалением кнопок, которые в настоящее время неактуальны?
Например, если ModuleA добавляет кнопку «Получить справку», а ModuleB добавляет кнопку «Отправить сообщение», и они имеют один и тот же регион (в данный момент виден только один из них), когда виден ModuleA, я бы хотел временно нажать кнопку «Отправить сообщение» удален - или, по крайней мере, деактивирован - из ToolBar (но вернулся в то же положение, когда вид ModuleB активирован).
Подходит ли этот подход при использовании MVVM?

Спасибо.


person Noich    schedule 01.12.2011    source источник


Ответы (1)


Это возможно с MVVM и призмой. Я делаю нечто подобное, где у меня есть переключатель кнопок, и он будет заполнен из списка. Каждая кнопка представляет собой форму, и щелчок по кнопке, очевидно, открывает эту форму. Я создал интерфейс ISwitchboard, который реализует каждая форма, желающая быть частью Switchboard. Следовательно, каждый элемент интерфейса ISwitchboard реализует ShowDialogForm, команду WPF и т. Д.

Было бы слишком громоздко объяснять все детали, которые вам нужно сделать. Однако вот основные принципы, по которым работает мой код:

  1. В моем загрузчике я переопределяю метод GetModuleCatelog () для добавления любых модулей, которые я хочу. Каждый модуль представляет приложение (форму), которое будет открываться с коммутатора и должно быть унаследовано от созданного мной интерфейса, чтобы модель представления знала, как его открыть и показывать ли, когда это необходимо. Возможно, вам не понадобится использовать модули для того, что вы хотите, но это ваш выбор дизайна. Тем не менее, если ваши кнопки открывают приложения, вам потребуются модули.

  2. Затем моя модель представления предоставляет список доступных модулей, которые используют мой настраиваемый интерфейс, добавленный с помощью призмы. Я могу получить список модулей через интерфейс IModuleCatalog, который я передаю в конструктор виртуальной машины. Список представляет собой наблюдаемую коллекцию. Если я хочу реализовать права пользователя, я могу ограничить список таким образом, если хочу.

  3. Затем в моем представлении есть элемент управления элементами, который привязывается к списку коммутатора. Оттуда я могу представить их, как хочу. Я создал шаблон элемента, который будет отображаться для каждого элемента в списке, и он привязан к команде, предоставляемой интерфейсом SwitchboardItem.

person Community    schedule 01.12.2011