作为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正常工作。
答案 0 :(得分:0)
您已经提到无法在View Model for Content View(您的自定义控件)中使用INavigationService
。
解决此问题的最简单和最简单的方法之一是在内容视图(自定义控件)中添加可绑定命令,使用此可绑定命令,您将能够使用该命令并从页面的ViewModels绑定到该命令。 / p>
使用此方法,您可以以标准方式在页面ViewModel中使用INavigationService
,并根据ContentView
中的命令执行从页面导航。
换句话说,当执行来自可重用视图的命令时,您可以从ViewModel处理导航。
有很多例子如何实现这一点,你可以使用另一个SO thread。
祝你编码好运!