无法在 Xamarin.Forms 中实现导航

Posted

技术标签:

【中文标题】无法在 Xamarin.Forms 中实现导航【英文标题】:Cant implement navigation in Xamarin.Forms 【发布时间】:2019-02-09 08:21:11 【问题描述】:

我正在Xamarin.Forms 上写一个应用程序。有一个主要形式,可以从它转移到其他表示形式。问题是我无法使用页面导航。如何实施? ViewModel 我有一个图书馆。我使用MvvmLightLibs 向其发送命令。我看到的所有信息都给出了使用INavigation 的示例,但在ViewModel 中不可见

【问题讨论】:

【参考方案1】:

您必须自己实现NavigationService,在 MvvmLight for Xamarin.Forms 中没有现成可用的。然而,实现这样的服务非常简单,只需几个方法就足够了。我建议您查看this blogpost,其中包含构建简单 Xamarin.Forms + MvvmLight 应用程序的演练。

关键是要创建一个像INavigationService 这样的接口,它会有像NavigateToGoBack 这样的方法。然后,您创建一个实现此接口的类并使用根 NavigationPage 在整个应用程序中导航。在启动时,您创建一个NavigationService 的实例并传入NavigationPage 的实例,它将使用它。

如果您使用SimpleIoc 注册实例,则可以使用构造函数注入 - 在您的视图模型中,您将INavigationService 参数添加到构造函数,框架将传入您注册的实例。

所有这些都在上面链接的博文中进行了演示,因此这是一个很好的起点。

另一个很好的学习资源是 this Xamarin Show 插曲,其中 MvvmLight 的创建者 Laurent Bugnion 亲自展示了如何将框架与 Xamarin.Forms 一起使用。

【讨论】:

也许另一个 nuGets 有这个功能? 无论如何,你仍然必须传递你的导航页面。我认为首先遵循其中一个教程,然后在您的解决方案中重新创建它是最好的方法

以上是关于无法在 Xamarin.Forms 中实现导航的主要内容,如果未能解决你的问题,请参考以下文章

在 Xamarin.Forms 项目中实现 MVVM

我是 xamarin 的新手,想在我的 xamarin.forms 项目中实现对话框

如何在 Xamarin Forms 中实现 CrossPushNotification 插件?

如何使用依赖注入在 Xamarin.Forms 中实现 Flyoutnavigation

Xamarin.Forms中实现CheckBox控件

如何在 Xamarin Forms App 中实现 SSO?