问题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的注释后,窗口将按预期工作。
答案 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