我试图在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
。我无法弄清楚这是如何或为什么被调用的,但事实确实如此。它没有做的是填充参数。
所以,我的问题是:
init
的方式和原因(假设这是正确的方法)?InitFromBundle
,如果没有,那是什么?答案 0 :(得分:0)
MvvmCross依赖于底层平台导航机制 - 例如Android上的意图和Windows手机上的网址。
因此,它不支持按对象导航 - 仅通过一些小的可序列化类型进行导航 - 有关详细信息,请参阅https://github.com/MvvmCross/MvvmCross/wiki/ViewModel--to-ViewModel-navigation。
如果您确实希望使用更复杂的可序列化对象进行导航,那么您可以轻松扩展视图模型类以支持此功能 - 请参阅Passing complex navigation parameters with MvvmCross ShowViewModel