我有一个包含各种模块的应用程序。
我已将主 shell (xaml) 划分为不同的区域,现在我可以在这些区域加载模块。
但是我有一个要求,在单击某个按钮时我必须打开一个新窗口,然后一个新模块将加载到新窗口上。
我创建了一个新窗口,并且正在打开该窗口,但该窗口有一个主应用程序的 RegionManager 无法识别的区域。
如何在不在主窗口但在子窗口上的区域加载模块?
最佳答案
您可以在以下 SkyDrive 公共(public)文件夹中找到问题的快速示例解决方案:“RegionInChildWindowWithNavigation”:
根据我的理解,您提到的问题可能与在 ChildWindow View 上设置 RegionManager
属性有关,该属性导致定义的 ModalWindowRegion
可以从 RegionManager
访问。下面是前面提到的示例中的 ModalDialog
ChildWindow View 构造函数。请注意,它还添加了一个事件处理程序,以便在关闭时正确删除 ChildWindow 中的所有 View 。
[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());
}
}
然后,您只需RequestNavigate()
到ChildWindow中定义的指定Region> 从 RegionManager
中查看如下:
ModalDialogWindow.Show();
rm.RequestNavigate("ModalWindowRegion", new Uri("HelloWorldView", UriKind.Relative));
此外,您可能会发现以下 CodePlex 线程很有用:
我希望这会有所帮助。
关于wpf - 在注册区域的新窗口中打开 Prism 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19221634/