2

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

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

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

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

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

4

1 回答 1

3

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

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

[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 线程很有用:

我希望这有帮助。

于 2013-10-07T16:12:47.923 回答