小序:
还记得周星驰那句话吗?“人如果没有理想,那跟咸鱼有什么区别”。当自己一步踏上追求理想的征途,才发现为了理想要放弃很多、很多……只有这时候才能切身地明白到什么叫“舍得”。
向所有关注我的朋友们汇报一声,我开始动笔写《深入浅出WPF》了。现在大概已经完成了两三章的样子,我会把一些片断陆续发布到blog里,请大家多提宝贵意见。
我知道,当我最疲惫、最没有激情的时候,唯一能激励我走下去的,就是朋友们和编辑们的鼓励!
我需要你们!
 
正文:(似乎今天的正文最简单不过了——直接Copy再Paste就搞定了!)
 
 
1. XAML是什么?
 自人类社会诞生,社会分工就在不断地进行着。从原始社会畜牧业与农业分离到当 今社会成千上万行业的彼此协作,无不是社会分工的杰作。社会分工的意义在于它能使从事固定工作的人群更加专业化,并通过合作的形式提高生产效率。换句话 说,在合作不是问题的情况下,若干群专业人士配合工作要比同等数量的一群“大而全”人士的工作效率高。
这种分工与合作的关系不仅存在于行业之间,也存在于行业内部。软件开发中最典型的分工合作就是设计师(Designer)与程序员(Programmer)之间的协作了。在WPF出现之前,协作的场景一般是这样:
1. 需求分析结束后,程序员对照需求设计一个用户界面(User Interface,UI)的草图,然后把精力主要放在实现软件的功能上
2. 与此同时,设计师们对照需求、考虑用户的使用体验(User Experience,UE)、使用专门的设计工具(比如PhotoShop)设计出优美而实用的UI
3. 最后,程序员按照设计师绘制的效果图,使用编程语言实现软件的UI
经验告诉我们,即便是优秀的设计师团队和优秀的开发团队合作,花费在沟通和最终整合上的精力也是巨大的。经常出现的问题有:
• 设计师的设计跟不上程序逻辑的变化
• 程序员未能完全实现设计师提供的效果图
• 效果图与程序功能不能完全匹配
• 从效果图到软件UI的转化耗费很多时间
这些并不是谁对谁错的问题——只要存在分工,那么合作的成本就不可能为零。问题的核心在于,上述的合作是“串行”的,也就是先由设计师完成效果图、再由程序员通过编程实现。如果设计师能与程序员“并行”工作、直接参与到程序的开发中来,上述的问题就迎刃而解了。
解决方案是什么呢?是让设计师们使用编程语言来设计UI效果图,还是让程序员们使用PhotoShop来开发程序?显然都行不通。
网 络程序开发团队的经验倒是很值得借鉴:草图产生后,设计师们可以使用HTML、CSS、JavaScript直接生成UI,程序员则在这个UI产生的同时 实现它背后的功能逻辑。在这个并行的合作中,设计师们可以使用Dreamweaver等设计工具,程序员使用Visual Studio来进行后台编程。有经验的设计师和程序员往往还具备互换工具的能力,这使得他们能基于HTML+CSS+JavaScript这个平台进行有 效的沟通。
为了把这种开发模式从网络开发移植到桌面开发和富媒体网络程序的开发上,微软创造了一种新的开发语言——XAML。XAML的全称是 Extensible Application Markup Language,即“可扩展应用程序标记语言”。它在桌面开发及富媒体网络程序的开发中扮演了HTML+CSS+JavaScript的角色、成为设计 师与程序员之间沟通的枢纽。
 现在,设计师和程序员们一起工作、共同维护软件的版本,只是他们使用的工具不同——设计师们使用Blend(微软 Expression设计工具套件中的一个)来设计UI,程序员则使用Visual Studio开发后台逻辑代码。Blend使用起来很像PhotoShop等设计工具,因此可以最大限度地发挥出设计师的特长。使用它,设计师不但可以制 作出绚丽多彩的静态UI,还可以让UI包含动画——虽然程序员们也能做出这些东西,但从专业性、时间开销以及技术要求上显然是划不来的。更重要的是,这些 绚丽的UI和动画都会以XAML的形式直接保存进项目,无需转化就可以直接编译,节省了大量的时间和成本。
 下次,当你在面试被问到“什么是XAML”时,你可以回答:XAML是WPF技术中专门用于设计UI的语言。