MVVMCross - 传递参数

时间:2014-06-27 17:22:15

标签: c# mvvm viewmodel mvvmcross

我试图在MVVM Cross中跨视图模型传递对象。这是我传递的VM的代码:

    private void CallVM2()
    {
        MyObj newObj = new Myobj();
        IMyService myService = new MyService();

        Dictionary<string, object> p = new Dictionary<string, object>()
        {
            {"MyObj", newObj},
            {"MyService", myService}
        };

        ShowViewModel<ViewModel2>(p);
    }

这里是ViewModel2的代码:

    public void Init(Dictionary<string, object> p)
    {

    }

好的 - 所以我也尝试了InitFromBundle,但似乎我需要Init。我无法弄清楚这是如何或为什么被调用的,但事实确实如此。它没有做的是填充参数。

所以,我的问题是:

  1. MVVM框架调用init的方式和原因(假设这是正确的方法)?
  2. 我应该使用InitFromBundle,如果没有,那是什么?
  3. 为什么我的代码没有通过对象字典传递给Init,我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

MvvmCross依赖于底层平台导航机制 - 例如Android上的意图和Windows手机上的网址。

因此,它不支持按对象导航 - 仅通过一些小的可序列化类型进行导航 - 有关详细信息,请参阅https://github.com/MvvmCross/MvvmCross/wiki/ViewModel--to-ViewModel-navigation

如果您确实希望使用更复杂的可序列化对象进行导航,那么您可以轻松扩展视图模型类以支持此功能 - 请参阅Passing complex navigation parameters with MvvmCross ShowViewModel