接触WPF有一段时间了,可以谈一些自己的感受了。如果之前了解GEF之类的框架技术,对WPF就更加亲切了。
WPF与以往的Windows技术可以说是迥然不同,以前的Windows WPI,都是通过window API来实现的,本质上是与Window进行交互,也就是说主窗口是Window,窗口上的控件也是Window,例如:我们看到的编辑框、Label、Button等。
到了WPF中,除了主窗口是Window,构成窗口的内容部分已经不再是Window,是WPF自己绘制出来的(这个绘制为了提高效率,采用了DirectX技术),编辑框、Label、Image、Tree等控件都是绘制出来的,在WPF上实现了HitTest、Focus、Event等机制。从而得以把文档、多媒体、传统交互界面、3d、动画等统一到一起来了,因为是采用了统一的技术,所以也就比较传统的Windows WPI更加集中。
当然如果WPF仅仅是这样改造的话,也没有多大意思,在上述基础上,WPF引入了基于对象树树的界面描述方式,类似于Html的表达方式,在对象树上,解决了对象的属性继承、变化传播、树本身的维护问题等。同时引入了Binding、Template思想,让界面编程达到了一个新的高度。
可以说这个WPF在java下没有能够与其匹敌的技术,可惜的是WPF对java并不太友好,可能除了WebService方式,很难与jee服务器进行交互,即使是Webservice,应该也会面临着事务、安全性等的难题。
如果能够在java领域里引入WPF的思想就好了。