首页 文章

单页mvvmcross中的多个视图模型

提问于
浏览
2

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

目前,我有各种View Models,它们都绑定得很好(使用MvvmCross),只要它们在单独的 pages 中 .

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

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

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 回答

  • 2

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

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

相关问题