我有一个包含各种模块的应用程序。
我已将我的主 shell (xaml) 划分为不同的区域,现在我可以在这些区域上加载模块。
但是我有一个要求,在单击某个按钮时,我必须打开一个新窗口,然后在新窗口上加载一个新模块。
我创建了一个新窗口并打开该窗口,但该窗口有一个主应用程序的 RegionManager 无法识别的区域。
如何在不在主窗口而是在子窗口的区域上加载模块?
您可以在以下SkyDrive公用文件夹“ RegionInChildWindowWithNavigation ”中找到针对您的问题的快速示例解决方案:
根据我的理解,您提到的问题与在ChildWindowRegionManager
视图上设置属性有关,导致定义的可以从. 下面是上述示例中的ChildWindow视图构造函数。请注意,它还添加了一个事件处理程序,以便在关闭时正确删除ChildWindow中的所有视图。ModalWindowRegion
RegionManager
ModalDialog
[ImportingConstructor]
public ModalDialog(IRegionManager rm)
{
this.rm = rm;
this.SetValue(RegionManager.RegionManagerProperty, rm);
InitializeComponent();
this.Closed += new EventHandler(WindowsView_Closed);
}
void WindowsView_Closed(object sender, EventArgs e)
{
while (rm.Regions["ModalWindowRegion"].Views.Count() > 0)
{
rm.Regions["ModalWindowRegion"].Remove(rm.Regions["ModalWindowRegion"].Views.FirstOrDefault());
}
}
然后,您只需要在ChildWindow视图中定义RequestNavigate()
的指定区域,如下所示:RegionManager
ModalDialogWindow.Show();
rm.RequestNavigate("ModalWindowRegion", new Uri("HelloWorldView", UriKind.Relative));
此外,您可能会发现以下 CodePlex 线程很有用:
我希望这有帮助。