在Prism WPF中导航到新窗口

时间:2019-04-26 10:26:16

标签: wpf prism

问题1

我知道有一种方法可以使用 InteractionRequestTrigger PopupWindowAction InteractionRequest 使用自定义视图打开弹出对话框。但是我正在寻找诸如注册Window和WindowViewModel进行导航并调用 INavigationAsync.Navigate(“ SomeWindowUri”,someParameters)的解决方案。似乎更简单,更清洁的解决方案。棱镜是否支持这种方法?

问题2

我有要从MainWindow显示的主窗口(MainWindow)和新窗口(NewWindow)。我试图在NewWindow中定义的区域中显示一些视图。当我使用IRegionManager.RegisterViewWithRegion时,它可以按预期工作。但是,当我显示NewWndow,然后调用IRegionManager.RequestNavigate时,没有任何反应。当Region在MainWindow中时,方法IRegionManager.RequestNavigate会按预期工作。是我的错误还是Prism无法在单独的窗口中导航?

这里是一个示例:https://bitbucket.org/equo/prismregionnavigationtest.git 它是WPF的Prism示例的修改示例:17-BasicRegionNavigation。打开新窗口后,单击任何按钮都没有任何反应,但是ViewA或ViewB应该显示在下面。在App.CreateShell方法中取消对MainWindow1的注释后,窗口将按预期工作。

1 个答案:

答案 0 :(得分:0)

问题1::Prism团队正在开发新的对话服务,该服务完全可以实现我想要的功能。 https://github.com/PrismLibrary/Prism/pull/1682 它已经可以通过棱镜的预览版获得。

问题2:要使其正常工作,需要创建作用域区域并将其附加到新创建的窗口。

_ScopedRegion = _RegionManager.CreateRegionManager();
RegionManager.SetRegionManager(newWindow, _ScopedRegion);

然后使用它在新窗口中导航。

_ScopedRegion.RequestNavigate("NewRegion", "ViewA");

演示在这里: https://bitbucket.org/equo/prismregionnavigationtest.git