【问题标题】:MVVM Cross - passing parametersMVVM 交叉传递参数
【发布时间】:2014-06-27 17:22:15
【问题描述】:

我正在尝试在 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,我该怎么做?

【问题讨论】:

    标签: c# mvvm viewmodel mvvmcross


    【解决方案1】:

    MvvmCross 依赖于底层平台导航机制 - 例如,android 上的 intent 和 windows phone 上的 url。

    因此,它不支持按对象导航 - 仅按一些小的可序列化类型导航 - 请参阅 https://github.com/MvvmCross/MvvmCross/wiki/ViewModel--to-ViewModel-navigation 了解更多信息。

    如果您确实想通过更复杂的可序列化对象进行导航,那么您可以轻松扩展您的视图模型类以支持这一点 - 请参阅 Passing complex navigation parameters with MvvmCross ShowViewModel

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      相关资源
      最近更新 更多