我正在开发一个Windows 8 metro风格的应用程序,使用开发人员预览大学的学术项目。我们必须使用MVVM模式。
在主页面中,我们有一个带按钮的地铁式主菜单。根据MVVM模式,每个按钮都会指向一个应用程序工具(即“显示我的库”,“显示收藏夹”,......),它应该属于不同的视图。
在您看来,我们是否应该为每个视图创建一个新的“都市风格页面”,或者期望每个use case刷新主页面的“场景”,就像许多示例应用中的那些一样? 换句话说,使用MVVM应该在“普通旧WPF Windows”和“全新都市风格页面”之间进行1:1的匹配吗?
答案 0 :(得分:2)
MVVM的一点是,除了用户可以查看ViewModel数据的方式之外,没有关于构成View的内容的硬规则。
视图不必是页面,但可以是控件。因此,如果您愿意,您可以拥有一个页面,其中显示了许多View控件。我经常把我的视图作为控件,即使它们是页面上显示的唯一项目,因为它允许我在以后更容易地将它们嵌入到其他页面中。
MVVM模式纯粹是将UI与业务/代码逻辑分离的一种手段。 ViewModel类并不关心它的数据显示方式,它只提供要显示的数据的绑定点,属性等,以及代码函数的触发点。
有些人会坚持文件后面的代码中从不存在任何代码,但我认为需要采用更实用的方法。控制View的可视方面的代码很好,当看起来是业务逻辑的入侵时会有一些时间。
例如,在实现拖放功能时,后面的代码中将需要代码。这实际上只是一个视觉方面,所以没有问题,但如果业务模型规定在给定位置只删除某些项目或最大数量的项目,那么ViewModel将需要提供View可以提供的一些数据绑定点用来实现这个。通过这样做,你可以说现在背后的View代码实现了一些业务逻辑。
回到原来的问题。我会尝试实现该应用程序,使其行为与Windows 8 metro-stryle应用程序的预期相同。这显然会对你的编码方式产生影响,但在这样做的时候仍然可以坚持使用MVVM模式。