2013-11-24 81 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

相關問題