如何在"covers"两个区域中插入一个视图?棱镜、WPF、MVVM
How to insert one view which "covers" two regions? Prism, WPF, MVVM
我在 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
.
内部
如何在 "covers" 两个区域(UpperRegion
和 BottomRegion
)中插入一个视图?可能吗?
使用 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>
我在 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
.
如何在 "covers" 两个区域(UpperRegion
和 BottomRegion
)中插入一个视图?可能吗?
使用 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>