ПРИЗМА: Вложенные регионы в регионе - PullRequest
1 голос
/ 25 февраля 2012

Проект основан на PRISM.

У меня есть основной регион в TabControl в оболочке.

        <!-- Main Region : A tab control -->
        <TabControl prism:RegionManager.RegionName="MainRegion" >
        </TabControl>

Затем у меня есть несколько Modules где все они содержат одинаковые представления.И должны быть добавлены в области управления вкладки.

|_ModuleA
| |_ViewA
|
|_ModuleB
  |_ViewB

Проверьте, пожалуйста, изображение.На вкладке ModuleA слева от вкладки отображается содержимое ViewA, а справа - общий вид, поскольку на всех вкладках должен отображаться один и тот же пользовательский интерфейс.

enter image description here

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 26 февраля 2012

Я думаю, что 'lecrank' уже ответил на вопрос.Там нет проблем, чтобы добавить регион в другой регион или вид.Что я сделал в своем проекте:

  • Каждый модуль получает копию объектов IRegionManager и IEventAggregator в конструкторе (я использую MEF)
  • В Initialize() функция каждого модуля регистрирует свои собственные регионыс его собственным представлением, и т. д., и т. д. *
  • Всякий раз, когда событие или поток программы должен быть передан другому модулю (например), тогда я просто .Publish () предопределенное событие (CompositePresentationEvent) с параметрами.
  • Оболочка сама по себе является пустым шаблоном, который определяет только пару «глобальных» регионов (например, TabControl в вашем сценарии), и все, что отображается на нем, происходит из разных представлений модулей и не реализовано в классе Shell или даже в проекте, содержащем Shell.

Так что не стесняйтесь определять и реализовывать Регионы и Представления в других модулях - просто передайте как-нибудь экземпляры IRegionManager и IEventAggregator в класс Module.

1 голос
/ 26 февраля 2012

Ваш вопрос немного странный, но если я не ошибаюсь, вам следует искать «составных докладчиков». Докладчик, который регистрирует новый регион в администраторе регионов, где могут отображаться другие виды. Вы также можете сделать регион локально ограниченным. Для получения дополнительной информации см http://msdn.microsoft.com/en-us/magazine/cc785479.aspx

И хорошее место, где можно найти ответы для Prism, - это сайт compositewpf codeplex, где кто-то задает, возможно, тот же вопрос: http://compositewpf.codeplex.com/discussions/273120

...