【概念】MVVM

一、简介

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。

MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。

ViewModel可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。

M:封装了核心数据逻辑和功能的计算关系的模型

V:视图(窗体)

P、C、VM:封装了窗体中的所有操作、响应用户的输入输出、事件等

MVP(Model-View-Presenter)里的P与MVC里的C差不多,区别是MVC是系统级架构的,而MVP是用在某个特定页面上的,也就是说MVP的灵活性要远远大于MVC,实现起来也极为简单。

View绑定到ViewModel,然后执行一些命令在向它请求一个动作。

而反过来,ViewModel跟Model通讯,告诉它更新来响应UI。

MVP模式中,为了让UI层能够从逻辑层上分离下来,设计师们在UI层与逻辑层之间加了一层interface。

无论是UI开发人员还是数据开发人员,都要尊重这个契约、按照它进行设计和开发

这样,理想状态下无论是Web UI还是Window UI就都可以使用同一套数据逻辑了。

二、MVVC构成:

1、模型M

代表真实状态内容的领域模型(面向对象),或指代表内容的数据访问层(以数据为中心)。

2、视图V

用户在屏幕上看到的结构、布局和外观(UI)。

3、视图模型VM

暴露公共属性和命令的视图的抽象。MVVM没有MVC模式的控制器,也没有MVP模式的presenter,有的是一个绑定器。在视图模型中,绑定器在视图和数据绑定器之间进行通信。

4、绑定器

声明性数据和命令绑定隐含在MVVM模式中。在Microsoft解决方案堆中,绑定器是一种名为XAML的标记语言。声明性数据绑定技术的出现是实现该模式的一个关键因素。

 三、例子

https://blog.csdn.net/rui0720/article/details/9821085?locationNum=10&fps=1

指正一下上面部分代码的错误

1         public DelegateCommand SaveCommond { get; set; }
2  
3         public MainViewModel()
4         {
5             SaveCommond = new DelegateCommand((obj) => SaveFile());
6         }

改为

        public DelegateCommand SaveCommand
        {
            get
            {
                return new DelegateCommand((arg) => SaveFile());
            }
        }

否则实现不了按键功能。

这个的例子是对的:

https://blog.csdn.net/byh371256/article/details/105456152

/*******相与枕藉乎舟中,不知东方之既白*******/
原文地址:https://www.cnblogs.com/Mars-0603/p/14185445.html