MvvmCross中的复合视图

Hol*_*osa 5 mvvmcross

我有一个WPF MVVM应用程序,我想重构使用MvvmCross来支持WPF和Mono for Android实现.

我们的应用程序的观点包括:

  • 始终可见的工具栏
  • 导航栏区域
  • 主视图区域
  • 弹出窗口区域

这些区域中的每一个都是主应用程序窗口上的UserControl,UiService只是交换每个区域中的视图.对于弹出窗口,它也只是主窗口上的UserControl,可见性在显示或隐藏对UiService的调用时发生变化.UiService还接受上下文参数,该参数允许将状态信息传递到视图模型中以进行显示.

主视图通常是多个子视图的组合.在这些情况下,主视图模型将创建作为属性公开的子视图模型.主视图将这些属性设置为子视图的数据上下文.

我认为MvvmCross肯定会支持这种风格的复合视图,但我找不到这样的例子.有没有相关的MvvmCross示例?在MvvmCross中实施的推荐方法是什么?

Stu*_*art 6

我认为MvvmCross肯定会支持这种风格的复合视图,但我找不到这样的例子.有没有相关的MvvmCross示例?在MvvmCross中实施的推荐方法是什么?

这种风格的视图不是移动应用程序的默认视图 - 大多数移动应用程序都是基于页面的.

但是,复合视图在平板电脑应用中变得越来越普遍 - 甚至移动应用都有例外 - 例如标签,全景图,弹出按钮等

为了允许不同类型的显示,每个MvvmCross UI平台都提供了presenter您可以根据需要自定义的平台.

presenter您可以在此类中选择要呈现ViewModel和Views的方式.此外,由于它只是一个C#类,它可以将此责任委托给任意数量的其他对象,允许您构建越来越复杂的面板,弹出窗口,选项卡,嵌入式导航堆栈等模式.

有关这方面的一些信息,包括一些样本的链接,请参阅此幻灯片 - https://speakerdeck.com/cirrious/presenters-in-mvvmcross

WPF和iOS Twitter的示例可能是一个很好的起点 - https://github.com/slodge/MvvmCross-Tutorials/tree/master/Sample%20-%20TwitterSearch