【问题标题】:Navigation between pages in Xamarin Forms在 Xamarin 表单中的页面之间导航
【发布时间】:2018-04-17 01:53:13
【问题描述】:

我在虚拟机中有以下命令:

ICommand LaunchGameCommand => new Command(() =>
{
    //Navigation.PushAsync(...
});

根据the answers here,我应该能够在注释代码中使用类似于导航的东西;然而,Navigation 对象似乎驻留在Android.Content.Res... 这似乎完全是另外一回事。

这仍然是在 Xamarin Forms 中的视图/视图模型之间导航的正确方法,还是现在已被替代方法取代?

【问题讨论】:

  • 导航对象位于 xamarin.forms 命名空间中。如果你看到 android 命名空间,这个视图模型在哪里?
  • 在共享项目中

标签: c# xamarin mvvm xamarin.forms icommand


【解决方案1】:

导航是页面的一部分,如果您没有对某个页面的引用,则无法找到导航属性,您需要在视图模型中访问当前页面才能看到此属性,您可以可以使用

访问您的当前页面

Application.Current.MainPage.Navigation.Push...

【讨论】:

  • 我遇到的问题是,如果我需要从 VM 中引用我正在导航到的页面,那么我就破坏了 MVVM 模式。显然,我可以使用诸如反射之类的方法来解决这个问题......但每次我看到任何关于 Xamarin Forms 的宣传时,我都会被告知它是开箱即用的 MVVM。
  • 是的,但使用的是 Application.Current。您拥有应用程序的当前上下文,并且可以访问您的主页或当前页面。
【解决方案2】:

您是否使用任何特定的 MVVM 框架?其中大部分包括从 VM 导航到 VM 的方式。

我使用 FreshMvvm。它允许您执行以下操作以在 VM 之间导航并传递数据:

CoreMethods.PushPageModel<MyNextPageModel>(DataToPass);

More details here

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 2017-07-23
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多