WPF / MVVM - ViewModels在哪里?

时间:2009-12-22 11:23:33

标签: wpf mvvm

我对整个MVVM模式都不熟悉,并试图绕过它。我目前要弄清楚的是:在一个结构良好的解决方案中,ViewModel在哪里生活?

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

  • 申请(视图)
  • DomainSpecificCode(ClassLibrary)
  • 网关(ClassLibrary)

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

3 个答案:

答案 0 :(得分:3)

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

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

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

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

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

仅使用View Models构建控制台应用程序版本非常容易。控制台应用程序代码少于200行代码,基本上是加载ProjectViewModel并对其进行操作。

答案 1 :(得分:2)

ViewModels应该放在Application层中,因为它们往往是技术特定的。

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

如果添加新应用程序,则还必须提供新的ViewModel。

答案 2 :(得分:1)

article 描述了 WPF MVVM 应用程序的具体架构。

层:

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