MVVM的再次理解

MVVM的理解

MVVM: Model、View、ViewModel

我要着重介绍的是ViewModel, 从字面意思就能看出ViewModel是View层的Model,也就是说ViewModel就是View的逻辑层。 ViewModel就是为了存储View的相关状态、行为,而不仅仅是View绑定的一些字段。

举个例子:比如界面当前的编辑状态、选择状态等等状态都是ViewModel存储的。

再举个例子:当View收到用户的输入时,可以通过Command等来调用ViewModel的处理, ViewModel继续调用Model层的增删改或者通过Event通知别的ViewModel处理。

也可以认为ViewModel是Model的一种特殊例子。 好多Model层的数据并不能直接呈现给某个View,因此需要ViewModel做包装和转换。换句话说, 传统的DTO(Data Transfer Object)应该定义在ViewModel层来转换Model的某些数据。

总结下:View通过DataContext可以知道ViewModel, ViewModel不知道View!, ViewModel不应该对View有引用关系。当ViewModel对View的状态和行为都进行了存储时, 就能完全脱离View而存在。

和MVC的对比:

MVC一般都是Controller先接受到用户输入, 然后Controller来创建View, 而且Controller创建完View后就不关心View了。下次用户的输入又再次先进入Controller来处理。

MVVM是View先接受到用户输入, 然后View通知ViewModel;

猜你喜欢

转载自blog.csdn.net/qq_23350817/article/details/103816601