如何在"covers"两个区域中插入一个视图?棱镜、WPF、MVVM

How to insert one view which "covers" two regions? Prism, WPF, MVVM

我在 ModuleA 有一个名为 FooView 的视图,在 Shell 有两个名为 BottomRegionUpperRegion 的区域:

<Window x:Class="FooBootstrapper.Shell">    
    <DockPanel LastChildFill="True">
        <ContentControl  DockPanel.Dock="Top" prism:RegionManager.RegionName="{x:Static inf:RegionNames.UpperRegion}" Margin="5"/>
        <ContentControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.BottomRegion}" Margin="5"  />
    </DockPanel>
</Window>

如果我将 FooView 粘贴到 BottomRegion,那么 FooView 将被注入到 BottomRegion。这是正常和合乎逻辑的。

protected override void InitializeModule()
{            
   RegionManager.RegisterViewWithRegion(RegionNames.BottomRegion, typeof(FooView));
}

但是,我想将整个视图 FooView 注入两个区域:UpperRegionBottomRegion。那就是我想要一个完整的视图 UpperRegionBottomRegion.

内部

如何在 "covers" 两个区域(UpperRegionBottomRegion)中插入一个视图?可能吗?

使用 Grid 而不是 DockPanel。 然后使用 Grid.Rowspan 或 Grid.Columnspan.

Andrew O'Neill has answered me at msdn forum。所以我post在这里他的回答。希望对其他人有帮助:

不可能。 从代码中可以看出,那里有两个内容控件。 您可以设置两者或任一个的内容。 您不能说一个控件分布在这个内容控件和另一个控件的内容中。 您可以在两者之上的面板(网格)中放置另一个 Contentcontrol 并设置其内容。

<Window x:Class="FooBootstrapper.Shell"> 
<Grid>   
    <DockPanel LastChildFill="True">
        <ContentControl  DockPanel.Dock="Top" prism:RegionManager.RegionName="{x:Static inf:RegionNames.UpperRegion}" Margin="5"/>
        <ContentControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.BottomRegion}" Margin="5"  />
    </DockPanel>

 <ContentControl ....
</Grid>
</Window>