单页mvvmcross中的多个视图模型

时间:2014-05-09 05:29:48

标签: mvvm xamarin mvvmcross

我正在尝试使用Xamarin为多个平台制作应用程序。该应用程序使用Mvvm结构和MvvmCross。

目前,我有各种视图模型,只要它们位于单独的页面中,它们都可以很好地绑定(使用MvvmCross)。

但是,我想制作一个引用多个View模型的页面。例如,一个页面几乎没有按钮,每个按钮都绑定到不同视图模型中的方法。

我明白要做到这一点我应该:

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>()); }
    }

这非常难看,我真的很感激,如果有人能把我推荐到解释这个问题的地方,或者更好地告诉我该怎么做。

干杯!

1 个答案:

答案 0 :(得分:2)

SpheroViewModel中使用SpheroView(请参阅:SpheroView.cs)。此视图是MvxBindingTabActivityView。因此,它使用Android TabHost将子视图显示为选项卡。设置在第30 - 48行完成。对于每个SubViewModel,您有一个自己的视图(例如SpheroAccelMovementView.cs),它可以绑定并显示单独的数据。

有关Tabs和MvvMCross的更多详细信息,不同的平台可以查看N = 25 - Video Tutorial。自stuart录制视频以来,有一些API更改可能。但它解释了制表符和子视图模型的一般概念。