【发布时间】:2013-12-11 12:42:03
【问题描述】:
*在MVVM中添加VM的主要目的*
我们可以说:
在 MVVM 中引入了 ViewModel,用于对代码进行单元测试。
如果我们比较 MVC 和 MVVM,如果没有 View,MVC 对 Controller 进行单元测试是很困难的。
所以我们又添加了一层 ViewModel 用于对主代码进行单元测试。管理一些模型不持久的非持久数据。 引入 ViewModel 来管理一些非持久化数据,并根据用户输入使用 Model 将该数据持久化到数据库中。
验证模型中的数据更改并按照命令持久化。
管理数据绑定。
而且我还看到大多数 MVVM 示例,用于命令绑定 conatins ViewModel 在执行某些命令时初始化另一个视图。这直接表明视图依赖于 ViewModel。
视图 --> ViewModel --> 模型
ViewModel 应该是一个独立的可测试单元。
从视图#1 初始化视图#2 的代码应该是视图#1 代码隐藏文件的一部分。
例子:
如果我想调用 MessageBox(view#2)。 消息框应在 View#1 中调用并基于消息框结果(是\否) 要执行操作,我们应该在 ViewModel#1 中调用适当的方法。有了这个 ViewModel 将独立于视图,我们可以轻松编写单元测试。
【问题讨论】:
-
MVC 和 MVVM 是解决同一问题的不同方法,但在其他方面无关。