2013-05-13 53 views
5

我有一个WPF MVVM应用程序,我想重构使用MvvmCross支持WPF和Mono的Android实现。MvvmCross中的复合视图

我们的应用程序的意见包括:

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

每这些区域是主应用程序窗口上的UserControl,UiService只是将每个区域中的视图互换掉。在弹出窗口的情况下,它也只是主窗口上的一个UserControl,它显示或隐藏对UiService的调用的可见性更改。 UiService还接受一个上下文参数,该参数允许将状态信息传递到视图模型中进行显示。

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

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

回答

6

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

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

但是,复合视图在平板应用程序中变得越来越普遍 - 甚至移动应用程序也有例外 - 例如,标签,全景图,弹出窗口等

为了实现不同类型的显示,每个MvvmCross UI平台都提供presenter,您可以根据需要自定义这些屏幕。

presenter类是您可以选择如何呈现您的ViewModels和视图。另外,因为它只是一个C#类,它可以将这个责任委托给它想要的许多其他对象,从而允许您构建日益复杂的面板,弹出窗口,选项卡,嵌入式导航堆栈等模式。

对于某些在这个信息,包括链接到一些样品,看到这个幻灯片甲板 - https://speakerdeck.com/cirrious/presenters-in-mvvmcross

的WPF和iOS TwitterSearch例子可能是开始一个很好的地方 - https://github.com/slodge/MvvmCross-Tutorials/tree/master/Sample%20-%20TwitterSearch

+0

刚一说明... Twitter API已过时,用于示例 - TwitterSearch“Twitter REST API v1不再处于活动状态。请迁移到API v1.1。 HTTPS:// dev.twitter.com /文档/ API/1.1/overview.' – Syska 2014-05-03 21:19:29

2

请记住,您就可以在任意2周的ViewModels给定的命令。

例如,如果用户完成登录表单,并且您要载入复合用户界面,则显示导航栏视图模型和主视图模型。

然后,您可以创建一个自定义演示者来交付相应视图的布局。

这听起来很简单(而且是),但花了我一段时间才弄明白。在TwitterSearch教程为斯图尔特展示的解决方案中提到

2

我已经创建了一个使用自定义演示者允许在同一页面上的用户控件中显示多的ViewModels插件。这也让平时查看导航,所以你可以使用精确视图模型来对WPF,Andoid片,Windows应用商店或iPad的复合意见,并在移动设备上的网页导航:

https://github.com/ChristianRuiz/MvvmCross-ControlsNavigation