基本上我的场景如下:我有一个View绑定到ViewModel,带有一个项目列表(项目的类是我模型中的一个类)。每次从“列表视图”的列表中选择一个项目时,其字段将在另一个“详细信息视图”中进行编辑。这与客户管理示例场景相同,其中从列表中选择客户(在“列表视图”中),并且可以在“详细信息视图”中更改客户的详细信息。 在我的方案中添加的怪癖是,我希望对详细信息视图中的项目所做的更改将反映在列表视图中。更改将从详细信息视图保存在DB中。
此外,根据详细信息视图中所做的更改,可以在第一个视图中从列表中删除该项目。请注意,这不是从数据库中删除记录,因为列表视图中的列表只是数据库中项目的过滤列表。我想出了两种可能的方法:
编辑:如何调用第二个视图?第二个视图是否实际使用共享ViewModel的相同实例?
- 或 - 2.将列表视图中选择的项目 按引用 传递给详细信息视图。因此,在这种情况下,我正在维护 1-View-to-1-ViewModel映射。
我的问题是:
Init()
方法(与ShowViewModel()
方法一起使用)是否支持传递参数
参考?如果您能在答案中包含代码段/示例,我将不胜感激。
提前多多感谢,
答案 0 :(得分:2)
将2个视图绑定到同一个视图模型
如果您愿意,可以手动设置任何ViewModel
View
属性。在致电ViewModel = foo;
,base.OnCreate()
或base.OnNavigatedTo()
base.ViewDidLoad()
即可
in 2,Init()方法(与ShowViewModel()方法一起使用)是否支持通过引用传递参数?
MvvmCross不支持在ViewModel之间传递对象。在Windows Phone上,导航由url参数执行。在Android上,导航由Intent
执行 - 这些底层机制根本不允许您传递实际的对象引用。
一般情况下,我使用从数据存储到ViewModel
的消息处理这种情况中看到我通常在N = 12到N = 15的情况下执行此操作如果您能在答案中包含代码段/示例,我将不胜感激。