我正在尝试使用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>()); }
}
这非常难看,我真的很感激,如果有人能把我推荐到解释这个问题的地方,或者更好地告诉我该怎么做。
干杯!
答案 0 :(得分:2)
SpheroViewModel
中使用SpheroView
(请参阅:SpheroView.cs)。此视图是MvxBindingTabActivityView。因此,它使用Android TabHost将子视图显示为选项卡。设置在第30 - 48行完成。对于每个SubViewModel,您有一个自己的视图(例如SpheroAccelMovementView.cs),它可以绑定并显示单独的数据。
有关Tabs和MvvMCross的更多详细信息,不同的平台可以查看N = 25 - Video Tutorial。自stuart录制视频以来,有一些API更改可能。但它解释了制表符和子视图模型的一般概念。