Добавить PRISM Region Manager в существующее окно навигации - PullRequest
1 голос
/ 07 мая 2010

У нас есть «старое» приложение WPF, основанное на NavigationWindow. NavigationWindow имеет довольно большой шаблон ControlTemplate, который содержит ContentPresenter следующим образом:

<ControlTemplate>
    ....snip...
<ContentPresenter x:Name="PART_NavWinCP" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
    .....snip....
    </ControlTemplate>

Что мы хотим сделать, так это использовать ContentPresenter в качестве первой вкладки и динамически добавлять другие вкладки во время выполнения. Как это:

    <ControlTemplate>
....snip...
<TabControl Background="Transparent" cal:RegionManager.RegionName="MainRegion" Grid.ColumnSpan="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
       <TabItem Header="Nav Window Content">
           <ContentPresenter x:Name="PART_NavWinCP" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
       </TabItem>
    </TabControl>
.....snip....
</ControlTemplate>

Затем наши модули захватывают RegionName и вставляют их содержимое динамически. Кажется, проблема в том, что менеджеру региона PRISM не нравится, что наш код находится в ContentTemplate и не может разрешить регион. Я попытался обновить RegionManager, динамически добавив Region, просто имея элемент управления корневой вкладкой без ContentPresenter, но я не могу заставить это работать Есть идеи?

Ответы [ 2 ]

0 голосов
/ 10 мая 2010

Итак, мы обошли это, настроив NavigationWindow на фрейм и сбросив содержимое фрейма.Нам нужно сделать немного стайлинга, чтобы он выглядел хорошо;однако это единственный способ обойти использование региона в шаблоне содержимого NavigationWindow.Теперь мы удаляем весь код из фрейма, который был общим для приложения и который потребуется Shell (поскольку NavigationWindow не может стать Shell).

0 голосов
/ 07 мая 2010

Области в шаблонах представляют собой проблему - поскольку шаблоны отображаются после исходного содержимого, они не являются «элементами управления» или даже сами по себе экземплярами, и у менеджера региона нет возможности справиться с этим. я бы предположил, что добавление региона таким способом не будет поддерживаться.

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

...