zoukankan      html  css  js  c++  java
  • 【概念】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

    /*******相与枕藉乎舟中,不知东方之既白*******/
  • 相关阅读:
    springboot整合Swagger2
    FastJson会把哪些字符串解析为null
    BitMap再再体验之布隆过滤器
    如何利用windows自带的画图工具拼接图片
    BitMap再体验之排序
    BitMap 初体验
    Chrome 隐藏最常访问的网站
    idea同一个项目不同端口启动
    ubuntu16搭建harbor镜像库
    virtualbox硬盘扩容
  • 原文地址:https://www.cnblogs.com/Mars-0603/p/14185445.html
Copyright © 2011-2022 走看看