簡體   English   中英

在現有的導航窗口中添加PRISM區域管理器

[英]Add PRISM Region Manager In Existing Navigation Window

我們有一個基於NavigationWindow的“舊式” WPF應用程序。 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的根選項卡控件,但是我無法使它正常工作。 有任何想法嗎?

模板中的區域是一個問題-因為模板是在它們“控制”甚至是實例之后的初始內容之后呈現的,並且區域管理器無法處理它。 我會假設以這種方式添加區域將不受支持。

現在,使用沒有模板的無標簽選項卡控件可以正常工作,但是回想一下需要編寫一個內容適配器,該適配器知道如何處理目標區域類型並將其注冊到引導程序中,然后再執行模塊加載。

因此,我們通過將NavigationWindow更改為一個框架並將內容拖放到框架中來解決此問題。 我們需要做一些造型以使其看起來不錯。 但是,這是避免在NavigationWindow內容模板中使用區域的唯一方法。 現在,我們將從應用程序通用的框架中刪除所有代碼,Shell將需要它們(因為NavigationWindow無法成為Shell)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM