zoukankan      html  css  js  c++  java
  • WPF MVVM模式

    什么是MVVM模式,Model(模型)-View(视图)-ViewModel(视图模型)

    先来讲MVC模式,模型-视图-控制器,相信大多数人都用过原理无非是:

    页面产生某个请求,先找到页面对应的控制器,然后触发控制器的方法,控制器去模型调取数据拿回来,再返回给相应的视图,最后呈现页面。

    MVVM模式原理类似MVC,只不过中间的不叫控制器了叫视图模型,功能也比Controller复杂了一些,原因就多继承了一个监听接口。

    流程:

    1. 用户点击View某个按钮

    学过Winform都知道,点击Button有Click事件,这个你暂且把它当作事件(指令)好了,你当点击保存按钮会触发SaleCommand指令这是你自己在后台定义的,Command="{Binding SaleCommand}"的意思就是绑定的指令是SaleCommand。

    1. View点击之后保存触发SaleCommand,这就传到了ViewModel

    类似于Winform,在点击事件里写你要的方法。这里同样指定了方法是OnSaleCommand。然后执行方法,我这里写的sql语句,实现数据库更新,业务大了不可能每个页面都写SQL,就需要用到接口、IOC等等,实现解耦。

    1. 保存到结果之后,会将结果返回,比如一个list,但是这个Model继承了一个INotifyPropertyChanged接口,这个接口是干嘛用的呢,用来监测属性的变化,也是实现双向绑定必须继承的接口。当我Model里某个字段值发生变化,Set会触发,将结果展示在页面上,同样页面发生变化,也会将值传给后台。

    1. 类似于Winform的GridView绑定数据源是this.gridView.ItemSourse=数据源。WPF中也是一样。

    1. EquipBoxs就是数据源,但后台怎么赋值的呢,在ViewModel中,定义了一个动态集合,跟list差不多。但是这个动态集合是双向绑定的,页面变化后台也就变了,原因也是因为实现了INotifyPropertyChanged接口。

    2. 当页面发生改变时自动获取属性值,然后通过服务层修改到数据库。查询的时候也可以将查到的list集合,转化成ObservableCollection动态集合,然后就自动更新了。

    总的来说,利用数据驱动页面的原理就是对数据进行了监听,只要有一方改变,另一方也随之变化,View和ViewModel都是通过数据和命令的绑定联通的,这样View和ViewModel关联性就不大,这就是MVVM模式的好处。

  • 相关阅读:
    【java】对象赋值给另一个对象
    spring boot系列(五)spring boot 配置spring data jpa (查询方法)
    Spring Data JPA 查询
    Spring Data JPA 介绍
    OpenID简介
    OAUTH协议介绍
    URL encoding(URL编码)
    RESTful 介绍
    spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)
    spring boot 启动报 java.lang.NoClassDefFoundError: ch/qos/logback/core/spi/LifeCycle 错误
  • 原文地址:https://www.cnblogs.com/cg-ww/p/13649730.html
Copyright © 2011-2022 走看看