wpf - 在注册区域的新窗口中打开 Prism 模块

标签 wpf prism-4

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

我已将主 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/

相关文章:

c# - WPF:ListBox 项目从下到上显示

c# - WPF:使用 ObjectDataProvider 将整数转换为 bool 值

wpf - 在 WPF 应用程序的 Prism 中设置 Focus OnNavigedTo

c# - 从 dll 文件加载 Prism 模块(在启动时)

c# - 线程停止得不够快

c# - 为什么按钮单击事件 "bubble up visual tree"不按 MSDN 文章所述发送到 StackPanel?

wpf - 带有嵌套扩展器的 ListView 不会折叠

wpf - 哪个更适合与 Prism4、Unity 或 MEF 一起用作依赖注入(inject)容器?

c# - 在运行时更改用户及其在 WPF/Prism 桌面应用程序中的权限的常用方法

mvvm - RadGridView 编辑按钮命令在 Prism 4.1 Silverlight 5 中未绑定(bind)