Xamarin Forms - Access Prism INavigationService in View Mode



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

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

在 ContentPage 中访问 INavigationService是微不足道的,只需使用构造函数注入即可,问题是使用 prism 7 无法将 INavigationService 注入内容视图的视图模型中 - Brian Lagunas 在 Xamarin 论坛上对此主题的回复中证实了这一点。

布莱恩在回应中引用如下:

不能将 INavigationService 注入到 ContentView 的 VM 中。应公开可从 VM 绑定到的属性,或在加载 ContentView 时在代码中设置该属性。

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

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

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

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

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

有很多示例如何实现这一点,您可以从另一个 SO 线程中使用这个示例。

祝您在编码方面好运!

最新更新