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模式的好处。

  • 相关阅读:
    机器学习---聚类算法
    机器学习解决问题的框架
    17个机器学习的常用算法!
    机器学习---理论篇
    golang 调用cmd执行EXE
    队列(自定义列表实现自定义队列)
    栈Stack(使用自定义链表实现自定义栈)
    链表( 自定义链表)
    队列(动态数组实现自定义队列)
    栈Stack(动态数组实现自定义栈)
  • 原文地址:https://www.cnblogs.com/cg-ww/p/13649730.html
Copyright © 2011-2022 走看看