基本上我的场景如下:我有 1 个视图绑定到 ViewModel,并带有一个项目列表(项目的类是我的模型中的类)。每次从此“列表视图”中的列表中选择一个项目时,其字段都会在另一个“详细信息视图”中编辑。这与客户管理示例场景相同,其中从列表(在“列表视图”中)选择客户,并且可以在“详细信息视图”中更改客户的详细信息。在我的场景中添加的怪癖是,我希望对详细信息视图中的项目所做的更改反映回列表视图中。更改从详细信息视图保存在数据库中。
此外,根据详细信息视图中所做的更改,可以从第一个视图的列表中删除该项目。请注意,这并不是从数据库中删除记录,因为列表视图中的列表只是一个filteredDB 中的项目列表。我想出了两种可能的方法:
- 通过将 2 个视图绑定到同一个视图模型
EDIT: 我如何调用第二个视图?第二个视图实际上会使用共享 ViewModel 的同一个实例吗?
-或者-
2. 通过传递在列表视图中选择的项目引用到详细信息视图。因此在这种情况下,我维持1-View 到 1-ViewModel 映射.
我的问题是:
- 我怎样才能实现场景1,
- 在 2 中,是否
Init()
方法(与ShowViewModel()
方法)支持通过以下方式传递参数
参考?
如果您可以在答案中包含代码片段/示例,我将不胜感激。
预先非常感谢,
将 2 个视图绑定到同一个视图模型
您可以自由设置ViewModel
任何财产View
如果您愿意,可以手动操作。简单设定ViewModel = foo;
在致电之前base.OnCreate()
, base.OnNavigatedTo()
or base.ViewDidLoad()
2、Init()方法(与ShowViewModel()方法配合使用)是否支持按引用传递参数?
MvvmCross 不支持在 ViewModel 之间传递对象。在 Windows Phone 上,导航是通过 url 参数执行的。在 Android 上,导航是通过Intent
s - 这些底层机制根本不允许您传递实际的对象引用。
一般来说,我使用从数据存储到 ViewModel 的消息传递来处理这种情况
如果您可以在答案中包含代码片段/示例,我将不胜感激。
您可以看到我通常如何在 N=12 到 N=15 中执行此操作http://mvvmcross.wordpress.com/ http://mvvmcross.wordpress.com/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)