2014-05-09 53 views
2

我正在嘗試使用Xamarin爲多個平臺創建應用程序。該應用程序使用Mvvm結構和MvvmCross。單個頁面中的多個視圖模型mvvmcross

目前,我有各種視圖模型,他們都綁定很大(使用MvvmCross),只要他們在單獨的頁。

但是,我想製作一個引用多個視圖模型的單個頁面。例如,一個頁面中只有幾個按鈕與不同的View Models中的方法綁定。

我明白,要做到這一點我應該:

1)把屏幕不同的意見。

2)根據視圖模型將按鈕分配到不同的視圖。

我不知道如何分屏?碎片是答案嗎?


此外,這是否意味着一個視圖模型,將知道頁面中的所有視圖模型是必要的?


我目前的解決辦法是在以下方面具有改變網頁的當前視圖模型中的所有頁面的選項卡,如下圖:

public ICommand VM1Command 
    { 
     get { return new MvxCommand(() => ShowViewModel<ViewModel1>()); } 
    } 
    public ICommand VM2Command 
    { 
     get { return new MvxCommand(() => ShowViewModel<ViewModel2>()); } 
    } 
    public ICommand VM3Command 
    { 
     get { return new MvxCommand(() => ShowViewModel<ViewModel3>()); } 
    } 

這是很醜陋,我真的很感激,如果任何人都可以參考我到某個地方解釋,甚至更好告訴我如何去做。

乾杯!

+0

嘗試http://www.youtube.com/watch?v=cYu_9rcAJU4 - 揭穿一些視圖模型的神話 – Stuart

+0

謝謝斯圖爾特的評論!你的支持真的很棒!我編輯我的問題(希望)現在包含正確的術語。我相信我正在尋找的是實際上如何劃分頁面並在其中有多個視圖。謝謝 – YKa

回答

2

SpheroViewModel用於SpheroView(參見:SpheroView.cs)。這個視圖是一個MvxBindingTabActivityView。所以它使用Android TabHost將Subviews顯示爲Tab。該設置在第30-48行中完成。對於每個SubViewModel,您都有自己的視圖(例如SpheroAccelMovementView.cs),它們可以綁定並顯示單獨的數據。

有關Tabs和MvvMCross和不同平臺的更多詳細信息,請參閱N = 25 - Video Tutorial。由於斯圖爾特已經錄製了視頻,因此有或許一些API更改。但它解釋了選項卡和子視圖模型的總體思路。

+0

謝謝@ Sven-Michael Stube的回答。我很抱歉,我之前的問題不太清楚。如果我在該示例中正確理解了每個視圖模型都在不同的選項卡中,那麼我實際上只需要一個選項卡中的幾個視圖模型。 – YKa