WPF开发之数据绑定
知识点
- 响应式布局
- 事件驱动与数据驱动
- MVVM模式及其应用
- WPF中的数据绑定
一、响应式布局
响应式布局的由来
win xp时代的桌面以典型的800*600像素为特征,当时软件还非常简单,不需要适配高分辨率,适配窗体的缩放也非常简单。那个时候的应用用的是绝对定位。然而随着时代的发展,以及高DPI、16:10的屏幕的出现,适配界面在传统的窗体应用中越来越麻烦和臃肿。所以才会产生响应式布局。
什么是响应式布局
响应式布局,即根据设备的不同(主要是屏幕尺寸与比例)来进行自适配界面,其具有对高DPI友好的特征,常见的Android,iOS,微信小程序,以及现代化网页,WPF,UWP页面部分均使用了响应式布局。
action:写两个Demo,一个用Windows Forms写,一个用WPF,展示一下两者的区别。
响应式布局的优点
让开发人员能够更加地关注程序的实现细节,而不需要在适配界面上花费额外的时间,减小Bug的出现几率。
响应式布局的缺陷
需要兼容各种设备,导致产生了很多的无用标记,拖慢了软件的运行效率。但对于优点来说这些缺陷是可以接收的。
二、事件驱动与数据驱动
什么是事件驱动与数据驱动
事件驱动和数据驱动都属于业务逻辑的部分,事件驱动是用户产生了一个动作,从而驱动软件的运行。而数据驱动则是当数据发生改变时产生一个动作。
两者的比较
事件驱动是一种非常符合顺序思维的设计模式,这个方式的好处在于直观。但是,在大型的项目中,代码编写的成本和维护的成本都很高,对代码规范的要求高,代码抽象的要求也会很高。数据驱动,能够让业务逻辑的触发和执行不再依赖与视图的控件。数据源隐藏了重要的细节,并将其接口暴露给视图,从而实现视图和逻辑的分离。
三、MVVM模式及其应用
什么是MVVM模式
MVVM是Model-View-ViewModel的简写,他本质上就是MVC的改进版,MVVM就是将其中的View的状态和行为抽象话,让我们将视图UI和业务逻辑分开。当然这些事ViewModel已经帮我们做了。
比如,你有一辆汽车,假设其具有尺寸,重量,最大百米加速度这些属性。而你也的视图则负责将其加速的全过程在3D引擎中渲染出来(至于3D引擎渲染的细节,这里不做说明),例如他需要实时速度,实时加速度这些关键的数据。ViewModel就像Model和View之间的桥梁,View可以和ViewModel进行绑定,从而能够实现实时更新如图的功能。
四、WPF中的数据绑定
数据绑定的原理
对一个属性进行写操作时,其引发一个数据发生更改的事件,如果另外一个对象注册了这个事件(在Java中,我们应该说监听了这个事件),这样就能够将数据的更改广播到你想要处理的地方。
控件之间数据的双向绑定
涉及到依赖对象和依赖属性的概念
控件和数据源之间的数据绑定
需要数据源实现了接口System.ComponentModel.INotifyPropertyChanged