如何插入一个“覆盖”两个区域的视图?棱镜,WPF,MVVM

本文关键字:区域 视图 棱镜 WPF 两个 MVVM 覆盖 插入 何插入 一个 | 更新日期: 2023-09-27 18:21:08

我在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里面.

如何插入一个"覆盖"两个区域(UpperRegionBottomRegion(的视图?可能吗?

如何插入一个“覆盖”两个区域的视图?棱镜,WPF,MVVM

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

Andrew O'Neill在msdn论坛上回答了我。所以我在这里发布他的答案。我希望它对其他人有所帮助:

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

<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>