2013-11-24 160 views
3

基本上我的场景如下:我有1个视图绑定到ViewModel,带有项目列表(项目的类是我的模型中的类)。每次从此列表视图中的列表中选择一个项目时,其字段都将在另一个“详细信息视图”中进行编辑。这与客户管理示例场景相同,在该示例场景中,从列表中选择客户(在“列表视图”中),并且可以在“详细信息视图”中更改客户的详细信息。 在我的方案中添加的怪癖是,我希望对“详细信息视图”中的项目所做的更改反映回列表视图中。这些更改将从“详细信息”视图中保存在数据库中。MVVMCross - 将相同的ViewModel绑定到2个不同的视图

此外,根据在详细信息视图中所做的更改,可以从第一个视图的列表中删除该项目。请注意,这不会从数据库中删除记录,因为列表视图中的列表只是已过滤的数据库中的项目列表。我想通了两种可能的方法,我可以这样做:

  1. 通过2次结合到同一个视图模型

编辑如何调用第二个看法?第二个视图实际上是否使用共享ViewModel的同一个实例?

- 或 - 2.参照传入列表视图选择的项目的详细信息视图。因此,在这种情况下,我正在维护1-View-to-1-ViewModel映射

我的问题是:

  • 我怎样才能实施方案1,
  • 在2,莫非Init()方法(在结合使用与ShowViewModel()方法)支持通过 参考传递参数?

如果您的答案中包含代码片段/示例,我将不胜感激。

非常感谢提前,

+0

@Stuart为此在N:嗨斯图尔特,遗憾地在此一周后回来;只是编辑我原来的帖子,并添加了一个关于“将2个视图绑定到相同视图模型”主题的附加问题/澄清,我忘记了原来的内容:如何调用第二个视图? Thanx – Pap

回答

2

结合2次到同一个视图模型

你是免费的,如果你想手动设置任何ViewViewModel财产。简单地在2设置ViewModel = foo;调用base.OnCreate()base.OnNavigatedTo()base.ViewDidLoad()

之前,确实的Init()方法通过引用传递参数的支持(与ShowViewModel()方法结合使用)?

MvvmCross不支持在ViewModels之间传递对象。在Windows Phone上,导航由url参数执行。在Android上,导航由Intent执行 - 这些底层机制根本无法让您传递实际的对象引用。


总的来说,我处理使用从数据存储邮件这种情况视图模型

我将不胜感激,如果你能在您的答案代码片段/例子。

你可以看到我是如何通常= 12到N = 15 http://mvvmcross.wordpress.com/

+0

Thanx Stuart。我会尝试/检查所有的建议。 – Pap

相关问题