如何插入一个“覆盖”两个区域的视图?棱镜,WPF,MVVM
本文关键字:区域 视图 棱镜 WPF 两个 MVVM 覆盖 插入 何插入 一个 | 更新日期: 2023-09-27 18:21:08
我在ModuleA
有一个名为FooView
的视图,在Shell
有两个区域,名为BottomRegion
和UpperRegion
:
<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
注入两个区域:UpperRegion
和BottomRegion
。那就是我想有一个完整的视图UpperRegion
和BottomRegion
里面.
如何插入一个"覆盖"两个区域(UpperRegion
和BottomRegion
(的视图?可能吗?
使用网格而不是 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>