视图模型是否应包含逻辑?

时间:2011-01-06 05:24:48

标签: wpf mvvm

在wpf应用程序中,什么是viewmodel的责任?他可以管理所有内容或仅代表视图并将消息/事件发送到业务层并从中获取信息吗?

1 个答案:

答案 0 :(得分:10)

简短回答,是的。

更长的答案......

Model-View-ViewModel(MVVM)模式的主要目标是:

  1. 允许对视图逻辑进行单元测试。这些是应用于ViewModel层的单元测试,在没有与之关联的View的情况下执行。
  2. 通过最大限度地减少与XAML文件关联的代码隐藏量,促进开发人员设计人员的工作流程。
  3. MVVM模式还以与MVC及其UI模式相同的方式提供视图逻辑和业务逻辑之间的关注点分离。但是,上面的两点是真正定义MVVM模式的。

    现在,考虑一下您的业务逻辑位置。如果将它放在ViewModel中,那么#1&上面的#2仍然有效?是。如果将它放在一个单独的层中,#1和#2仍然有效吗?是。

    因此,在这两种情况下,您仍然可以实现MVVM的两个主要目标。您采用哪种方法实际上取决于应用程序的复杂程度以及开发应用程序的开发人员数量。随着这两个因素的增加,您将受益于3层......或更多!