很多winform的学者时常在我的技术群咨询要不要学习WPF?我一贯的观点是必须学啊!如果是搞工控做cs软件开发,WPF自然是首选。
①前后端分离:WPF是数据驱动的而非Winform的事件驱动,可以通过属性bing的方式实现界面的数据更新,这样就可以很好地实现前后台的分离,在大型的开发项目中,后端开发人员只用编写VM相关的逻辑,界面视图部分可以去交给美工设计人员完成,很适合多人分工同时开发;
②MVVM模式:正因为有了前后端的松耦合,就有了MVVM开发模式,所谓M就是我们定义的数据模型(model),V就是我们的UI界面视图(view),VM就是视图模型(View-model),这里用来承载我们模型与视图之间的逻辑代码;
③成熟的框架:正是有了MVVM的开发思想,就产生了对应的配套框架。WPF成熟主流的MVVM模式开发框架有Caliburn.Micro(简称CM),prism、MVVMLight等,我目前就一直在使用CM框架做开发,体验相当好。
④绚丽的外表:WPF通过XMAL开发界面,非常灵活,可以开发很多酷炫的界面,当然Winform也可以开发出很漂亮的界面,但是很费劲,还需要基本功异常扎实。
⑤松耦合:高内聚低耦合是软件设计的一个基本原则,通过事件发布、订阅;ioc容器依赖注入可以很好实现类文件之间的解耦,虽然这不是WPF自身的特性,所幸的是WPF常用的框架都集成了这些方法,使得开发者可以轻松实现这一目的。
⑥与分辨率无关:WPF是基于矢量绘图的,因此它产生的图形界面能够支持各种分辨率的显示设备。
⑦有钱途:国内最主流的编程语言当属Java,但是正因为主流,会Java、精通Java的就有大把大把的人选,一个普通的Java岗,一份普通的薪资,应聘者可以排一长队,就是这么卷。反观WPF,很多公司真是招不到人啊,在上海,有个两三年WPF工作经验,年薪二三十万是个很轻松的事情,甚至很多通过自学亦或者是转行的也能找到一份不错的工作,至少目前的现状是这样,因为C#的使用率正在稳步提升,这方面的人才却没有跟上市场的需求,不过,不知道这个现状会不会持续,也许过不了几年,WPF也会卷进来。
很多人一开始可能会先学习winform,winform简单、入门快,拖拖控件就可以搞出来界面。刚熟悉了Winform,习惯了拖控件,然后又去学习WPF,一开始难免有很多不适应。WPF难导倒是也不难,就是用法灵活,要了解熟悉的内容比较多,尤其是这方面的学习资源比较少。很多人时常群里问,WPF怎么学啊?大家第一反应就是看刘铁猛的【深入浅出WPF】,说明啥?一个说明这本书的确经典,其次也说明这方面学习资源极度匮乏,要知道这本书出版于2010年,至今已过去十二年。
WPF入门容易,精通难,任何一门语言也都是这样,包括Python。学习语言没有捷径可走,只能说是有一些好的方法可以借鉴。我也是通过自学走上WPF开发之路的,一开始就是买几本书,看书,写实例,其次就是上百度找学习资料,然后是上B站看学习视频,再就是上github找优秀的源码拜读。总之,需要不断用心的学习和积累。常言道,书山有路勤为径,学海无涯苦作舟!