框架地址​github.com

用这个框架也有一段时间了,刚引入的时候还没感受到MVVM的威力,随着项目的逐渐复杂,才真正感受到

VM和V分离后对于多端项目的巨大优势

目前项目有两套完全不同的界面布局方式,一套对应键盘操作,另一套对应触控操作。

如果按照之前那种逻辑和界面绑定的方式来做,基本是无法完成,同时不同操作揪绕到一起,BUG也是天量的。

感谢框架作者开源这套MVVM框架,使用期间也无数次去翻了wpf,prism,unity(IOC框架)的源码,两相比较,受益匪浅。

下面只是简单罗列这个框架是如何通过区分不同的数据流向,来避免数据被循环更新导致的死循环

框架把VM和V之间的更新分成了两个流向,通过Binding.cs中的UpdateTargetFromSource和UpdateSourceFromTarget区分了两个数据流向,这样就可以避免数据会产生更新死循环

V和VM的绑定和更新部分在Binding.cs文件中实现

有如下几个关键的变量和函数

// VM=>V更新流向
protected virtual void UpdateTargetFromSource()
// V=>VM更新流向
protected virtual void UpdateSourceFromTarget()
//VM=>V更新流向
private bool isUpdatingTarget;
//V=>VM更新流向
private bool isUpdatingSource;

数据更新的入口分别是两个不同的类

//VM=>V 数据更新入口
UnityEventProxyBase
//V=>VM 数据更新入口
UnityPropertyProxy

想通过代码调试看具体的函数调用堆栈的建议在ObservableObject.cs中的RaisePropertyChanged函数下断点,如下图

这个地方无论是VM=>V还是V=>VM都会触发,同时在对UpdateTargetFromSource和UpdateSourceFromTarget两个函数下断点,基本就能搞清楚数据的更新流向

mvvm绑定checkbox wpf_LoxodonFramework 数据双向绑定 通过控制数据流向防止更新死循环...相关推荐

  1. html 数据双向绑定,javascript实现数据双向绑定的三种方式小结

    前端数据的双向绑定方法 前端的视图层和数据层有时需要实现双向绑定(two-way-binding),例如mvvm框架,数据驱动视图,视图状态机等,研究了几个目前主流的数据双向绑定框架,总结了下.目前实 ...

  2. 浅谈MVVM是如何实现数据双向绑定的?

    angular 脏值检测 backbone 发布者订阅者模式 vue 数据劫持(结合发布者订阅者的模式) 关于Object.defineProperty() 一.主要实现思路: observe数据监视 ...

  3. vue的数据双向绑定原理

    前言: 什么是数据双向绑定? vue是一个mvvm框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化,数据也会跟着同步变化.这也算是vue的精髓之处了.单项数据绑定是使用状 ...

  4. php 双向绑定的原理,【原】数据双向绑定和虚拟dom探究

    自各个mvvm框架出现和流行以来,他们都实现了两个新的概念及功能:数据双向绑定和虚拟dom.网上对于这两个概念的阐述很多很全面,这里仅对它们的原理和应用场景进行探究和记录,希望更接地气的理解和应用这两 ...

  5. Vue是怎么实现数据双向绑定的

    vue数据双向绑定原理 vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的,那么vue是如果进行数据劫持的,我们可以先来看一下通过控制台输出一个定义在vue初始化数据上的对象是个什么 ...

  6. vue绑定事件、vue双向绑定 2022-3-14

    一.Vue绑定事件 1.1Vue的7个常用属性 以下一图是网络上的图 1.2 methods属性 <!DOCTYPE html> <html lang="en"& ...

  7. 前端笔记之微信小程序(二){{}}插值和MVVM模式数据双向绑定指令API

    一.双花括号{{}}插值和MVVM模式 1.1 体会{{}}插值 index.wxml的标签不是html的那些标签,这里的view就是div. {{}}这样的插值写法,叫做mustache语法.mus ...

  8. Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

    目录 一.VueJS是什么? 二.Vue的优缺点 三.MVVM 数据双向绑定 四.Vue的安装和使用 五.Vue模板语法-文本渲染 六.常用的vue的指令 一.VueJS是什么? 它是一个轻量级MVV ...

  9. 数据双向绑定_手把手教你用JavaScript如何实现数据双向绑定

    近几年前端技术栈真是发展的太迅速了,从以前的针对dom操作的框架如jquery,ext.js等框架逐步过渡到当前的mvvm模式,让前端开发者将注意力从dom操作逐渐解脱出来,专注于逻辑的实现,个人认为 ...

最新文章

  1. java 线性表排序_Java线性表的排序
  2. HP小型机superdome配置MC双机、PV、VG、LV初体验
  3. TabLayout-Android M新控件
  4. 一文讲透非标品的商品类目设计
  5. 分布式入门,怎样用PyTorch实现多GPU分布式训练
  6. 【转】ANSI与GB2312的编码问题
  7. 企业中squid+iptables多模块的综合应用案例
  8. 计算机基础知识上机操作excer,《计算机应用基础》Excel上机操作练习题.doc
  9. OSError: cannot identify image file
  10. 六级词汇打卡第二天(二)
  11. 大数据分析是如何工作
  12. 边学边写,琐碎记载oracle
  13. 3Done第七课——马克杯设计
  14. vss(2005)使用详解
  15. vue+element表格 苹果自带浏览器兼容问题
  16. 7-5 字符串对称 (10 分)
  17. 常用软件测试工具 ,赶紧收藏
  18. Download Example
  19. 数据中心服务器机柜内的信息点数
  20. C++课程设计-失物招领系统

热门文章

  1. 推荐系统学习(三)SVD奇异值分解做推荐与python代码
  2. mac 上brew加速
  3. Linux当前终端走代理ip
  4. java Servlet Session
  5. 54-locate 简明笔记
  6. 【XLL 框架库函数】 Excel/Excel12f
  7. 【软件工程】复利计算器--结对编程
  8. 不定高宽的元素居中的方法
  9. 请教如何维护好iis服务器?
  10. 虚拟顺丰快递生成器_电商时代|从顺丰优选看,生鲜冷链物流发展面临的问题及解决思路...