我已经在我的主窗口中定义了一些区域,我已经成功地在每个区域填充了一个视图。现在,我需要将所有区域最小化,作为一个“窗口”,以便能够最大限度地扩大另一个“窗口”。
我在想,我应该创建一个地区作为家长,让所有这些地区的孩子来到这个地区,以便能够把他们作为一个“窗口”来控制。这样做对吗?我该怎么做呢?
<Window>
<DockPanel LastChildFill="True">
<telerik:RadDocking x:Name="DockingControl" prismrgn:RegionManager.RegionName="{x:Static Common:RegionNames.MainRegion}">
<telerik:RadSplitContainer InitialPosition="DockedLeft">
<telerik:RadPaneGroup AutomationProperties.AutomationId="{x:Static Common:RegionNames.LeftAutoHide}" prismrgn:RegionManager.RegionName="{x:Static Common:RegionNames.LeftAutoHide}"/>
<telerik:RadPaneGroup AutomationProperties.AutomationId="{x:Static Common:RegionNames.LeftRegion}" prismrgn:RegionManager.RegionName="{x:Static Common:RegionNames.LeftRegion}"/>
</telerik:RadSplitContainer>
<telerik:RadSplitContainer InitialPosition="DockedRight" Orientation="Vertical">
<telerik:RadPaneGroup prismrgn:RegionManager.RegionName="{x:Static Common:RegionNames.TopRightRegion}"/>
<telerik:RadPaneGroup prismrgn:RegionManager.RegionName="{x:Static Common:RegionNames.BottomRightRegion}"/>
</telerik:RadSplitContainer>
</telerik:RadDocking>
</DockPanel>
</Window>发布于 2013-09-20 13:12:43
由于没有人接听,我最后使用地区经理关闭了所有区域。
regionManager.Regions[regionname].Remove(view);因此整个“窗户”。然后,我使用区域经理打开了新的“窗口”。
regionManager.RequestNavigate(...);发布于 2013-10-03 17:10:31
如果我正确理解,您将希望Navigate访问在MainRegion中注册的视图,以便使第一个View被停用,接下来的一个被激活。
因此,您的第一种方法是正确的,尽管在Shell中定义的窗口将只声明主区域,然后要导航到的视图将在其中注册。
this.RegionManager.RegisterViewWithRegion("MainRegion", typeof(MainView));Shell视图如下所示:
<Window>
<DockPanel>
<TabControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion"/>
</DockPanel>
</Window>您提到的主视图中的其他区域将在包含它们的适当的MainRegion's注册视图上定义。但是,如果您计划浏览同一视图的不同实例,您应该知道为每个导航视图创建范围范围的区域管理器,以便只将subRegions隔离到该视图中。
您可以为指定的视图创建范围区域管理器,如下所示,然后注册属于每个子区域的视图:
IRegionManager scopedRegionManager = mainRegion.Add(objectView, null,
true);
scopedRegionManager.Regions["TopRightRegion"].Add(subView);您可以在下面的棱镜导航指南章节中找到有关和视图导航的更多信息:
希望这能有所帮助。
https://stackoverflow.com/questions/18876439
复制相似问题