1

我正在开发一个 Windows 8 Metro 风格的应用程序,在大学的学术项目中使用开发者预览版。我们必须使用 MVVM 模式。

在主页中,我们有一个带有按钮的 Metro 风格主菜单。根据 MVVM 模式,每个按钮都指向一个应用程序工具(即“显示我的库”、“显示收藏夹”……),它应该属于不同的视图。

在您看来,我们应该为每个视图创建一个新的“地铁风格页面”,还是期望为每个刷新主页的用例创建一个“场景”,就像许多示例应用程序中存在的那样?换句话说,使用 MVVM 是否应该在“plain old WPF Windows”和“brand new metro-style Pages”之间进行 1:1 匹配?

4

1 回答 1

2

MVVM 的问题在于,除了它是用户可以查看 ViewModel 数据的手段这一事实之外,没有关于什么构成 View 的硬性规则。

视图不必是页面,但可以是控件。因此,如果您愿意,您可以拥有一个页面,在该页面上显示许多 View 控件。我经常将我的视图作为控件,即使它们是页面上显示的唯一项目,因为它允许我在以后更轻松地将它们嵌入到其他页面中。

MVVM 模式纯粹是一种将 UI 与业务/代码逻辑分离的方法。ViewModel 类并不关心它的数据如何显示,它只是为要显示的数据和代码功能的触发点提供绑定点、属性等。

有些人会坚持认为文件背后的代码中永远没有任何代码,但我认为需要一种更务实的方法。控制视图的视觉方面的代码很好,并且当似乎是业务逻辑侵入时,有时会出现这种情况。

例如,在实现拖放功能时,后面的代码中将需要代码。这实际上只是一个视觉方面,所以那里没有问题,但是如果业务模型规定只有某些项目或最大数量的项目被放置在给定位置,那么 ViewModel 将需要提供一些 View 可以的数据绑定点用于实现这一点。通过这样做,您可能会认为背后的 View 代码现在实现了一些业务逻辑。

所以回到你原来的问题。我会尝试实现该应用程序,使其行为符合 Windows 8 Metro-stryle 应用程序的预期。这显然会影响您的编码方式,但在这样做时仍然应该坚持使用 MVVM 模式。

于 2011-11-15T11:12:35.873 回答