三 微软的意图
微软在客户端的设计产品一直处于缺失的状态,除了Frontpage以外。由于微软多年的轻视,Frontpage几乎绝迹于Web开发设计市场。微软寄望Expression Studio产品来提升在设计人员或者说是在Web开发设计器中的知名度。微软的设计产品,最大卖点当然会选取在它能和应用程序开发人员之间更紧密更容易的的配合。Expression产品是以名为XAML (Extensible Application Markup Language)的使用者界面设计语言开发而成,可为Visual Studio读取。对设计与开发人员来说,拥有共通界面将有助于双方的协同合作。
微软Expression融入了富客户端理念,据有良好的渲染引擎和计算能力。为客户端提供了良好的体验,为开发者创造了更加方便、灵活的设计环境。微软预计明年在这块市场的业务将会由现在的13%成长到15%、甚至20%。
微软发誓将彻底改变用户对应用软件的体验。

如上图,这是微软的设计工具Expression Blend为大家准备的下一代应用程序的元素。正是在这种大势之下,微软才会在.Net3.0中推出WPF对整个软件生态链催熟。
按照微软讲师王洪超级的观点,WPF的出现解决了三个问题:
1 更快速的开发更丰富的用户体验:使用WPF,可以在更加快速的时间内开发出来更加丰富的界面,满足用户的需求。绝不仅仅是控件风格和样式的变化。如果仅仅是使用控件,建议您还是使用GDI+或者ASP.NET或者MFC等等就够了。WPF之所以有那些控件,我个人认为主要是为了向下兼容。WPF的目标应该是消除控件,让您开发出来的软件根本看不出来控件的特征,软件世界再也不是由Button+Textbox组成的怪物了。如下图,此款使用WPF开发的应用程序,你还能看到哪部分是控件吗?

2消除用户界面差异:也请注意左图,这就是一款使用WPF开发的应用程序,而且它是以IE为宿主的。如果只是看这部分截图,你可以区分它是Windows Application还是Browser Applicaiton吗?历史在1995进入一个鸿沟,开发人员突然变成了两大阵营:B/S开发人员以及C/S开发。而现在到了应该弥补这个鸿沟的时候了。WPF正是背负着这个历史责任;
3 软件开发团队的协作问题:软件开发团队的日常协作是一个非常大的问题,除了需求变更以外,第二个影响开发进度的就应该是团队协作性了。在软件团队中,我们比较熟悉Developer、DBA、Tester、IT Pro、Architect等。Designer可能往往被我们忽视,但实际上,Designer的工作成果才是与客户距离最近的。而且Designer与Developer如何配合工作,是很多团队所头疼的,而WPF正可以解决此问题。这儿对孙辉先生再说一句:XAML并不是WPF的另外一个名字,它是使用声明性编程方式实现WPF的一种文件格式。
也有部分网友对王洪超的观点并不赞同,如有网友认为:首先控件在WPF里面仍然是"first citizen",WPF并不是要取消控件,而是要实现控件的外观和其操作完全隔离,WPF提倡一个叫做lookless control的概念,也就是'"无外观控件'",你可以通过定义样式(styling)和控件面板(control templating)来定义一个控件的外观,这和传统的win32或是windows forms的控件自定义方式是完全不一样的。
在WPF里面,你可以用很多种方式来定义一个控件的外观:
1. 通过OnRender()方法.这种方式和windows forms种的方式非常相似,就是通过图形输出API来绘制控件的外观,在WPF里面,Image、 Shape、Border等控件都是通过这种方式来定义外观的。
2. 通过Control Template.也就是通过定义控件的面板来定义其外观。这种方式是最灵活,也是WPF提倡的一种做法。
3. 通过Visual Layer编程。WPF里面的所有具有外观的控件都有一个visual tree,你可以把Visual看成是一种具有一定图形外观的类。你可以重写VisualChildrenCount属性和GetVisualChild()方法来定义一个控件的visual集合,从而达到定义其外观的目的。
很多人对WPF与win32的联系有点不太清楚。首先WPF的线程模型仍然采用win32的STA模型,再者WPF仍然采用信息模型。采用这种模型的目的是为了能和其他程序更好的兼容。尤其是当你需要在WPF程序里面宿主win32, ActiveX, MFC,或是Windows Forms控件的时候尤为重要。但是WPF做得相当出色的地方就是WPF把这些线程模型和信息循环的APIs都封装在Dispatcher里面,DispatcherObject提供了一套更灵活的API来访问信息循环和实现线程同步。