在注册区域的新窗口上打开棱镜模块

时间:2013-10-07 09:49:47

标签: wpf prism-4

我有一个包含各种模块的应用程序。

我已将主shell(xaml)划分到不同的区域,现在我可以在这些区域加载模块。

但我要求在点击某个按钮时我必须打开一个新窗口,然后在新窗口中加载一个新模块。

我创建了一个新窗口,我正在打开该窗口,但窗口中有一个区域,主应用程序的RegionManager无法识别。

如何在不在主窗口但在子窗口上的区域上加载模块?

1 个答案:

答案 0 :(得分:2)

您可以在以下 SkyDrive 公用文件夹中找到针对您的问题的快速示例解决方案,作为“ RegionInChildWindowWithNavigation ”:

根据我的理解,您提到的问题与在 ChildWindow 视图中设置RegionManager属性相关,导致定义的{{1}可以从ModalWindowRegion访问。以下是上述示例中的RegionManager ChildWindow 视图构造函数。请注意,它还会添加一个事件处理程序,以便在关闭时正确删除 ChildWindow 中的所有视图。

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()); } } 到指定的区域,该区域在{strong> ChildWindow 视图中定义{1}}如下:

RequestNavigate()

此外,您可能会发现以下CodePlex线程很有用:

我希望这会有所帮助。