Xamarin Forms - 在内容视图的视图模型中访问 Prism INavigationService

Xamarin Forms - Access Prism INavigationService in View Model for Content View

作为 Xamarin.Forms 应用程序的一部分,我实现了自定义导航 header。导航 Header 只是一个具有自己的视图模型的内容视图。需要参与应用程序导航体验的页面在其中包含此内容视图。

此应用程序正在使用 Prism 7 并在视图模型中执行导航我想使用 Prism INavigationService。我遇到的问题是在导航内容视图的视图模型中获取对 INavigationService 的引用。

访问 ContentPage 中的 INavigationService 是微不足道的,只需使用构造函数注入来注入它,问题是使用 prism 7 无法将 INavigationService 注入内容视图的视图模型 - Brian Lagunas 在他在 Xamarin 论坛上对 this topic 的回复。

Brian 在他的回复中引用如下:

You can't inject the INavigationService into a ContentView's VM. You should either expose a property that you can bind to from your VM, or set it in code when the ContentView is loaded.

考虑到上述情况,在内容视图的视图模型中获取对 INavigationService 的引用的方法是什么?我已经将内容视图连接到它的视图模型并正常工作。

您已经提到无法在内容视图(您的自定义控件)的视图模型中使用 INavigationService

解决此问题的最简单方法之一是在您的内容视图(自定义控件)中添加可绑定命令,有了这个可绑定命令,您将能够使用该命令并从页面的 ViewModels 绑定到它.

通过这种方法,您可以以标准方式在页面 ViewModel 中使用 INavigationService,并根据 ContentView 中的命令执行从页面导航。

换句话说,当执行来自可重用视图的命令时,您可以处理来自 ViewModel 的导航。

有很多示例如何实现这一点,您可以使用另一个

祝您编码顺利!