【问题标题】:Metro-style application UI design: Pages vs ScenariosMetro 风格的应用程序 UI 设计:页面 vs 场景
【发布时间】:2011-11-15 10:39:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# mvvm microsoft-metro


    【解决方案1】:

    MVVM 的问题在于,除了用户可以查看 ViewModel 数据的方式之外,对于什么构成 View 没有硬性规定。

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

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

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

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

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

    【讨论】:

    • +1 表示“务实的方法”。你是对的,这不是哲学问题......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多