导航到 Prism WPF 中的新 window

Navigate to new window in Prism WPF

问题 1

我知道有一种方法可以使用 InteractionRequestTriggerPopupWindowAction交互请求。但我正在寻找解决方案,例如注册 Window 和 WindowViewModel 进行导航并调用 INavigationAsync.Navigate("SomeWindowUri", someParameters)。这似乎更简单和清洁的解决方案。 Prism 是否支持这种方法?

问题 2

我有mainwindow(MainWindow)和newwindow(NewWindow)要从MainWindow显示。我试图在 NewWindow 中定义的区域中显示一些视图。当我使用 IRegionManager.RegisterViewWithRegion 时,它按预期工作。但是当我显示 NewWndow 然后调用 IRegionManager.RequestNavigate 时,什么也没有发生。当区域位于 MainWindow 中时,方法 IRegionManager.RequestNavigate 按预期工作。是我的错误还是 Prism 无法单独导航 window?

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

根据问题 1: Prism 团队正在开发新的对话服务,这正是我想要的。 https://github.com/PrismLibrary/Prism/pull/1682 它已经可以通过 prism 的预览版获得。

根据问题 2: 要使其正常工作,需要创建作用域区域并将其附加到新创建的 window.

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

然后用它在新的 window 中导航。

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

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