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

时间:2018-06-09 19:56:13

标签: xamarin xamarin.forms prism

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

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

在ContentPage中访问INavigationService是微不足道的,只需使用构造函数注入注入,问题是使用棱镜7将INAVigationService注入内容视图的视图模型是不可能的 - Brian Lagunas在回复中证实了这一点在Xamarin论坛上this topic

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

  

您无法将INAVigationService注入ContentView的VM。您应该从VM中公开可以绑定的属性,或者在加载ContentView时将其设置为代码。

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

1 个答案:

答案 0 :(得分:0)

您已经提到无法在View Model for Content View(您的自定义控件)中使用INavigationService

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

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

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

有很多例子如何实现这一点,你可以使用另一个SO thread

祝你编码好运!