代码之家  ›  专栏  ›  技术社区  ›  AshtonKJ

wpf/mvvm-视图模型在哪里?

  •  2
  • AshtonKJ  · 技术社区  · 15 年前

    我对整个MVVM模式有点陌生,并试图将我的头脑围绕着它。我目前试图弄明白的是:在一个结构良好的解决方案中,视图模型在哪里?

    目前我的设计看起来像这样(有点):

    • 应用程序(视图)
    • 域特定代码(类库)
    • 网关(类库)

    如果我要添加另一种类型的视图(例如ASP.NET或Silverlight),视图模型的最佳存在位置在哪里?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Mark Seemann    15 年前

    视图模型应该放在应用程序层中,因为它们往往是特定于技术的。

    例如,您可能希望基于视图模型的状态将视图属性数据绑定到特定的颜色。但是,在Windows窗体、ASP.NET和WPF上,颜色是由不同的类型实现的,因此您无法在不同的技术中重用ViewModel。

    如果添加新应用程序,还必须提供新的视图模型。

        2
  •  3
  •   decasteljau    15 年前

    最近,我构建了一个有两种风格的MVVM桌面应用程序:

    • WPF文档基GUI
    • 控制台应用程序

    两个exe都使用相同的视图模型,一个是wpf,另一个不是。

    我可以将我的解决方案拆分为以下项目(libraries/exe):

    • 与项目无关的可重用代码(称为公共代码)
    • 项目模型+持久性
    • 项目视图模型
    • WPF应用程序+视图
    • 控制台应用程序

    仅仅通过使用视图模型就可以非常容易地构建控制台应用程序版本。控制台应用程序代码只有不到200行代码,基本上是在加载ProjectViewModel并对其执行操作。

        3
  •  1
  •   jbe    15 年前

    这个 article 描述的具体架构 WPF多功能虚拟机 应用。

    层:

    • 表示层:视图
    • 应用层:视图模型
    • 域层:域特定代码