首页 > 解决方案 > 在导航到新 ViewModel 期间 MvxBundle 为空

问题描述

我已将应用程序从 MvvmCross 5.x 迁移到 MvvmCross 6.1.2,现在我在导航期间遇到了 ntransferring bundle 的问题。

IMvxNavigationService被初始化并通过构造函数传递给VM。

现在我尝试将 MvxBundle 传递给MainViewModel下一次调用

NavigationService.Navigate<MainViewModel>(new MvxBundle(new Dictionary<string, string>()
{
    {"key1","value1" },
    {"key2","value2" },
}));

MainViewModel我覆盖InitFromBundle

protected override void InitFromBundle(IMvxBundle parameters)
{
    base.InitFromBundle(parameters);
}

但是parameters是空的。 parameters.Data不包含我的Dictionary.

难道我做错了什么?

标签: androidxamarinmvvmcross

解决方案


用于导航

NavigationService.Navigate<ViewModel, Parameter type>(parapeter)

参数可以是任何引用类型。例如

await NavigationService.Navigate<MainViewModel, Dictionary<String, String>>(new Dictionary<String, String> {{"", ""}});

您正在导航的 ViewModel 必须继承MvxViewModel<MyObject>和覆盖Prepare方法

public class MainViewModel
{
    public override void Prepare(Dictionary<String, String> parameter)
    {

    }
}

推荐阅读