WPF/MVVM系列(1)——前言
学习WPF之前,思考以下三个问题很有必要:
- 已有的Windows GUI开发技术有什么不足?
- WPF解决了什么问题?
- 学习WPF的目的是什么,最应该掌握哪些部分?
已有的Windows GUI开发技术有什么不足?
Windows GUI开发技术先后经历了Windows API、MFC、VB和.NET等阶段,这些技术的抽象程度不断加深,极大促进了软件开发效率及可维护性的提升。.NET框架包含WinForms和WPF两种层次较高的GUI开发技术,作为WPF的对照,我们先考察WinForms的主要不足:
- WinForms的UI设计高度依赖设计器,开发者很难用代码设计复杂的UI。
- WinForms缺乏数据绑定机制,开发者需要写大量代码来实现UI和数据的同步。
- WinForms采用事件驱动模型,开发者一不小心就会把UI逻辑和业务逻辑混淆到一起。
WPF解决了什么问题?
-
WPF使用XAML语言进行UI设计,提供了绑定、资源、模板、动画等高级特性,表达能力很强。
-
WPF提供完善的数据绑定机制,很容易实现UI和数据的同步。
-
WPF采用数据驱动模型,原生支持MVVM模式,很容易实现UI和业务逻辑代码的分离,从而降低模块之间的耦合度,提升软件的可维护性。
学习WPF的目的是什么,最应该掌握哪些部分?
-
我认为学习WPF的终极目的是:能熟练使用WPF的MVVM模式进行桌面应用开发,能保证代码的高度可维护性。
-
本系列文章不会介绍WPF控件的使用方法,使用控件是熟练度问题,门槛较低。
-
本系列文章聚焦在WPF的数据驱动模型和MVVM模式上,微软构建了一整套标准库用来实现这些高级特性,其中绑定、属性、事件和命令是当之无愧的核心,先对它们的来龙去脉进行介绍。
-
本系列文章最后将介绍如何使用原生库、三方库实现MVVM模式。