Windows Presentation Foundation 程序设计指南(跟Charles Petzold学WPF)
基本信息
编辑推荐
经典巨著《Programming Windows》作者.
Windows 大师 Charles Petzold 倾力打造..
助您迈进.NET3.0开发殿堂
用简洁的代码描述复杂的问题...
内容简介回到顶部↑
作译者回到顶部↑
本书提供作译者介绍
佩佐德(Charles Petzold),经典图书Programming Windows的作者。Programming Windows已出至第五版,是有史以便为最畅销、最广为人知的编程图书之一。Petzold于1994年荣获由微软创始人Bill Gates及Windows Magazine杂志共同颁发的Windows Pioneer Award。早在1985年春,他就开始使用Windows 1.0 SDK的beta版本进行Windows编程,并于1986年在杂志上发表了第一篇关于Windows编程的文章。他是Client Application Development MVP(微软最有价值专家),还出版了多本著作,包括Code:The Hidden Language .. << 查看详细
目录回到顶部↑
介绍
你的背景
本书
windows 操作系统与编程
系统需求
ctp 软件
代码范例
本书的支持
阅读与评论
作者的网址
特别感谢
第1部分 代码
第1章 应用程序与窗口
第2章 基本画刷
第3章 内容的概念
第4章 按钮与其他控件
第5章 stack与wrap
第6章 dock与grid
第7章 canvas
第8章 dependency property
你的背景
本书
windows 操作系统与编程
系统需求
ctp 软件
代码范例
本书的支持
阅读与评论
作者的网址
特别感谢
第1部分 代码
第1章 应用程序与窗口
第2章 基本画刷
第3章 内容的概念
第4章 按钮与其他控件
第5章 stack与wrap
第6章 dock与grid
第7章 canvas
第8章 dependency property
序言回到顶部↑
第一次接触WPF(Windows Presentation Framework)还是在2006年年底。.
当时我还在微软亚洲研究院的技术转换组,和另外两个同事一道,刚刚做完了一个叫EYAM的演示软件,用以测试视觉计算组最近的一些研究成果。
由于我们一开始仅仅把EYAM的目标定位于测试,所以,在基于Windows Forms开发它时,并没有花太多时间在界面设计上。然而,需求总在变化。因为测试效果不错,组里决定要把EYAM拿到来年的微软全球研究院技术节上展示。这不但要求我们为EYAM添加更多的功能,也意味着我们必须重新设计它的界面 。的确,若要从展会上数以百计的演示软件中脱颖而出,吸引与会者的眼球,EYAM就不但需要有很坚实的技术支撑,还要有足够动人的绚丽外表。
新增的功能,我们自忖还能应付,但界面调整呢?我们准备找一个专业设计师来帮我们,但一时找不到合适的人选,留给我们的时间却只有短短两个月了。
我们开始考虑其他的Windows程序开发框架。首先,该框架要尽可能保证界面与后台处理逻辑分离,以便在开发后期,设计师能顺利介入调整界面,而不影响程序内在逻辑;其次,该框架要有足够强大的界面设计能力,以保证我们在设计师最终无法到位的情况下,也有机会做出令人满意的用户界面。显然,WPF成为了我们最合适的选择。虽然我们需要为此付出一定的学习时间,但WPF的优良特性和对新技术的尝试欲望,让我们下定决心,在接下里的两个多月里,用WPF来重构整个EYAM。
开始工作后,我们才发现WPF的确太新了,以至于没有多少资料可供我们参考。浩如烟海的MSDN虽然全面,但毕竟不是用来系统学习的,而且在很多细节上,也是语焉不详;WPF核心开发组的blog的确解决了不少疑难,也是个不错的补充,但同样缺乏系统性。
如此雾里看花般忙碌了两个多月,我们最终没有等到传说中的设计师,但也总算借助WPF完成了一个还算不错的新版EYAM。回头看看这段经历,的确走了不少弯路,而缺乏可供系统学习的书籍资料是一大原因。
WPF不同于以往的任何开发框架,是一次全面的革新。对于初学者来说,上手也许不难,但如果不系统地学习它,不久之后你就会发现自己陷入一种知其然,不知其所以然的尴尬境地。问题是解决了,但为什么这么解决,原理如何,却不甚清楚。在开发过程中,我们遇到的最棘手的问题就是WPF的效率。当我们试图用一个WrapPanel来加载并显示成千上万张图片的时候,才发现其低下的效率令人无法接受。在WPF的WrapPanel之下,到底隐藏着怎样的玄机?我们没有时间通过Reflection去分析。虽然最终在开发组的Blog上找到了解决的办法,但也仍是一知半解。相信做技术工作的读者都会有这种感受,如果你对某种技术的掌握程度只是半生不熟,那么开发过程会变得相当痛苦。不了解原理,就如同被一个无形的枷锁给钳制着,无法挥洒自如。..
2007年3月份,我参加完微软技术节回国,博文视点的周筠老师问我是否愿意审校Application = Code + Markup的中文译本。想起开发小组曾经缺少一本好书来系统学习WPF,以及由此产生的不便,更考虑到本书作者Charles Petzold的鼎鼎大名,我便应承下来。
毕竟是Programming Windows作者的力作。通读全文,用一句话形容我的感受,便是“夫子言之,于我心有戚戚焉”。
根据笔者的经历,对于初学者来说,在没有正确引导的情况下,WPF的学习曲线是比较陡峭的。“Visual Tree”,“Logical Tree”,“Data Binding”,“Template”,“Dependency Property”,……,当所有这些新概念一齐涌入你的大脑时,你是很难在短时间内把它们系统地组织起来并消化掉的。如何从读者已掌握的知识出发,引导读者循序渐进地接受新知识,这正是Petzold所擅长的。Petzold从不孤立地介绍某个概念,而总是愿意把它们放在一个读者更为熟悉的上下文环境中,从背景说起,前因后果,娓娓道来,尽可能让这些新的概念变得不那么生涩难懂。
正是为了以一种合理的方式来引导读者学习WPF,本书在内容上做了别具匠心的安排。前一半篇幅从读者最熟悉的Code形式出发,详细讲解了如何单纯使用WPF API来开发程序。看完这部分内容,读者应该会对WPF的工作原理有一个全面的认识。接下来,作者才笔锋一转,用后一半篇幅详细讲述WPF的最大特色——XAML。
这样的谋篇布局,对于那些希望从以前的Windows 编程接口,如Windows API, MFC, Windows Forms,转到WPF上来的程序员来说,是再恰当不过的,因为它提供了一条相对平坦的学习路线。这正如想深入学习Windows 编程的人,应该从Windows API开始学起而不是一上来就用MFC一样,打好了基础,才能更进一步,正所谓磨刀不误砍柴工。
本书也非常适合有过一些WPF编程经验的人阅读。或许你会跟我和我的同事一样,读到某些精彩部分时,忍不住惊叹一声:“原来如此!”那是一种山重水复时,豁然开朗的畅快。“DataBinding怎么使用?”“VirtualizingStackPanel 究竟有什么作用?”“ListBox和TreeView控件是否还能做很多你意想不到的事?”很多困扰自己多时的问题,都在Petzold轻松的行文里得到了解答。浏览全文,你会发现章节之间的过渡不但非常自然,更有一些有趣的悬念设置,让读者在读完一章后就急着去翻阅下一章的内容,而这通常是读小说时才会有的那种不忍释卷的急迫感。
最令人称道的是,Petzold结合讲解内容,为读者精心准备了大量的实例代码。这些实例不但紧扣讲述内容,而且非常实用,绝无半点敷衍。和任何一本介绍编程语言的书一样,Petzold从最简单的“Hello World”程序开始,引领读者进入了WPF的奇幻旅程。在随后的阅读过程中,读者可以看到更多精彩例程,从而逐步体会到WPF的优雅与强大。这当中有不少小巧精致的例程,比如第4章的仿Windows记事本和第5章的仿Windows Explorer,都不过区区百行代码,却实现了足够多的功能。所有的代码都非常简洁清晰,十分便于读者阅读和仿效。
比较另类的是,作为一本主讲界面编程的书,全书没有一处程序截图,想要观看书中例程的效果,唯一的途径就是下载(或手工输入)源代码,编译并运行它们。“纸上得来终觉浅,绝知此事要躬行”,上手尝试,始终是学习一门语言的必经之路。
在Amazon上,有不少读者留下了对该书英文版的评论。有趣的是,评论出现明显的两个极端,要么说很好,要么说很糟。批评这本书的读者,认为Petzold花了太多篇幅在WPF的原理上,而没有直奔主题的去讲解如何用WPF来做一个完整的应用程序。或许是个人口味不同吧,我还是很喜欢Petzold这种抽丝剥茧的讲解风格, 不但告诉你How, 还告诉你Why。
如果你想了解隐藏在WPF华丽外表之下的奇妙世界,如果你有“千淘万沥虽辛苦,吹尽黄沙始到金”的那份执着和耐心,那么就请泡上一杯茶,打开你的计算机,准备好WPF的编程环境,开始细细品味这本充满乐趣的书吧。
胡志鹏...
2007年11月于广州
当时我还在微软亚洲研究院的技术转换组,和另外两个同事一道,刚刚做完了一个叫EYAM的演示软件,用以测试视觉计算组最近的一些研究成果。
由于我们一开始仅仅把EYAM的目标定位于测试,所以,在基于Windows Forms开发它时,并没有花太多时间在界面设计上。然而,需求总在变化。因为测试效果不错,组里决定要把EYAM拿到来年的微软全球研究院技术节上展示。这不但要求我们为EYAM添加更多的功能,也意味着我们必须重新设计它的界面 。的确,若要从展会上数以百计的演示软件中脱颖而出,吸引与会者的眼球,EYAM就不但需要有很坚实的技术支撑,还要有足够动人的绚丽外表。
新增的功能,我们自忖还能应付,但界面调整呢?我们准备找一个专业设计师来帮我们,但一时找不到合适的人选,留给我们的时间却只有短短两个月了。
我们开始考虑其他的Windows程序开发框架。首先,该框架要尽可能保证界面与后台处理逻辑分离,以便在开发后期,设计师能顺利介入调整界面,而不影响程序内在逻辑;其次,该框架要有足够强大的界面设计能力,以保证我们在设计师最终无法到位的情况下,也有机会做出令人满意的用户界面。显然,WPF成为了我们最合适的选择。虽然我们需要为此付出一定的学习时间,但WPF的优良特性和对新技术的尝试欲望,让我们下定决心,在接下里的两个多月里,用WPF来重构整个EYAM。
开始工作后,我们才发现WPF的确太新了,以至于没有多少资料可供我们参考。浩如烟海的MSDN虽然全面,但毕竟不是用来系统学习的,而且在很多细节上,也是语焉不详;WPF核心开发组的blog的确解决了不少疑难,也是个不错的补充,但同样缺乏系统性。
如此雾里看花般忙碌了两个多月,我们最终没有等到传说中的设计师,但也总算借助WPF完成了一个还算不错的新版EYAM。回头看看这段经历,的确走了不少弯路,而缺乏可供系统学习的书籍资料是一大原因。
WPF不同于以往的任何开发框架,是一次全面的革新。对于初学者来说,上手也许不难,但如果不系统地学习它,不久之后你就会发现自己陷入一种知其然,不知其所以然的尴尬境地。问题是解决了,但为什么这么解决,原理如何,却不甚清楚。在开发过程中,我们遇到的最棘手的问题就是WPF的效率。当我们试图用一个WrapPanel来加载并显示成千上万张图片的时候,才发现其低下的效率令人无法接受。在WPF的WrapPanel之下,到底隐藏着怎样的玄机?我们没有时间通过Reflection去分析。虽然最终在开发组的Blog上找到了解决的办法,但也仍是一知半解。相信做技术工作的读者都会有这种感受,如果你对某种技术的掌握程度只是半生不熟,那么开发过程会变得相当痛苦。不了解原理,就如同被一个无形的枷锁给钳制着,无法挥洒自如。..
2007年3月份,我参加完微软技术节回国,博文视点的周筠老师问我是否愿意审校Application = Code + Markup的中文译本。想起开发小组曾经缺少一本好书来系统学习WPF,以及由此产生的不便,更考虑到本书作者Charles Petzold的鼎鼎大名,我便应承下来。
毕竟是Programming Windows作者的力作。通读全文,用一句话形容我的感受,便是“夫子言之,于我心有戚戚焉”。
根据笔者的经历,对于初学者来说,在没有正确引导的情况下,WPF的学习曲线是比较陡峭的。“Visual Tree”,“Logical Tree”,“Data Binding”,“Template”,“Dependency Property”,……,当所有这些新概念一齐涌入你的大脑时,你是很难在短时间内把它们系统地组织起来并消化掉的。如何从读者已掌握的知识出发,引导读者循序渐进地接受新知识,这正是Petzold所擅长的。Petzold从不孤立地介绍某个概念,而总是愿意把它们放在一个读者更为熟悉的上下文环境中,从背景说起,前因后果,娓娓道来,尽可能让这些新的概念变得不那么生涩难懂。
正是为了以一种合理的方式来引导读者学习WPF,本书在内容上做了别具匠心的安排。前一半篇幅从读者最熟悉的Code形式出发,详细讲解了如何单纯使用WPF API来开发程序。看完这部分内容,读者应该会对WPF的工作原理有一个全面的认识。接下来,作者才笔锋一转,用后一半篇幅详细讲述WPF的最大特色——XAML。
这样的谋篇布局,对于那些希望从以前的Windows 编程接口,如Windows API, MFC, Windows Forms,转到WPF上来的程序员来说,是再恰当不过的,因为它提供了一条相对平坦的学习路线。这正如想深入学习Windows 编程的人,应该从Windows API开始学起而不是一上来就用MFC一样,打好了基础,才能更进一步,正所谓磨刀不误砍柴工。
本书也非常适合有过一些WPF编程经验的人阅读。或许你会跟我和我的同事一样,读到某些精彩部分时,忍不住惊叹一声:“原来如此!”那是一种山重水复时,豁然开朗的畅快。“DataBinding怎么使用?”“VirtualizingStackPanel 究竟有什么作用?”“ListBox和TreeView控件是否还能做很多你意想不到的事?”很多困扰自己多时的问题,都在Petzold轻松的行文里得到了解答。浏览全文,你会发现章节之间的过渡不但非常自然,更有一些有趣的悬念设置,让读者在读完一章后就急着去翻阅下一章的内容,而这通常是读小说时才会有的那种不忍释卷的急迫感。
最令人称道的是,Petzold结合讲解内容,为读者精心准备了大量的实例代码。这些实例不但紧扣讲述内容,而且非常实用,绝无半点敷衍。和任何一本介绍编程语言的书一样,Petzold从最简单的“Hello World”程序开始,引领读者进入了WPF的奇幻旅程。在随后的阅读过程中,读者可以看到更多精彩例程,从而逐步体会到WPF的优雅与强大。这当中有不少小巧精致的例程,比如第4章的仿Windows记事本和第5章的仿Windows Explorer,都不过区区百行代码,却实现了足够多的功能。所有的代码都非常简洁清晰,十分便于读者阅读和仿效。
比较另类的是,作为一本主讲界面编程的书,全书没有一处程序截图,想要观看书中例程的效果,唯一的途径就是下载(或手工输入)源代码,编译并运行它们。“纸上得来终觉浅,绝知此事要躬行”,上手尝试,始终是学习一门语言的必经之路。
在Amazon上,有不少读者留下了对该书英文版的评论。有趣的是,评论出现明显的两个极端,要么说很好,要么说很糟。批评这本书的读者,认为Petzold花了太多篇幅在WPF的原理上,而没有直奔主题的去讲解如何用WPF来做一个完整的应用程序。或许是个人口味不同吧,我还是很喜欢Petzold这种抽丝剥茧的讲解风格, 不但告诉你How, 还告诉你Why。
如果你想了解隐藏在WPF华丽外表之下的奇妙世界,如果你有“千淘万沥虽辛苦,吹尽黄沙始到金”的那份执着和耐心,那么就请泡上一杯茶,打开你的计算机,准备好WPF的编程环境,开始细细品味这本充满乐趣的书吧。
胡志鹏...
2007年11月于广州
【插图】
评论交流
共有48人开贴评论 64人参与评论 40人参与打分 查看
评价等级:







发表于:2008-3-19 0:01:00
这本书的英文原版名是《Application=Code MakeUp》,当初看英文原版的时候,觉得这个名字非常奇怪,也很怀疑这是WPF方面的第一本书。当时看了作者在前言里面所说的,终于明白了作者的良苦用心。由于作者觉得每个WPF程序员应该有坚实的完全由代码编写WPF程序的基础,所以作者把书籍分成两个部分,第一部分是按照常规的模式,由一行行代码来构建WPF的这座大厦。而第二部分就是从标志性语言XAML的角度来重新阐述WPF,这是最简洁的编写WPF语言的方式,两种方式一组合就有了这本书的名字。目前这本书不是最出名的,我觉得原因有:这本书以代码编写模式进入WPF的介绍,对于一些新手可能会比较难于把握,而且面对需要大量的编码,看了没几页就有了畏难情绪(但是这是真正深入理解一个东西特别是程序语言的最好方式,这也是为什么大部分Java方面的书籍推荐大家入手时别使用Eclipse或者Netbeans等编译器的原因之一);另外本书没有程序截图(另外一本经典书籍Thinking in Java也是),可能是为了控制书籍的页数,毕竟在没有插图的情况已经有1000来页了,再加上了截图,块头肯定更加大,大家带着不方便不说,而且书价肯定也上去了。
我原来一开始这本书也是看不下去了,觉得太繁琐了,特别是第一部分,需要写很多代码,所以就转去看Adam Nathan《Windows Presentation Foundation Unleashed》,说实话,Adam Nathan的写作方式是比较吸引人的,带有很有精彩的图片,完全由XAML入手,但是美中不足的就是对底层代码处理不足,而这正是我想推荐的这本书的强项。
不久前看到国内电子工业出版社出版了这本书,由台湾著名IT名士蔡学镛翻译,在翻译质量方面也肯定得到了保障(以前看过他的《爪哇夜未眠》,文笔不错)。所以买了一本,拿到书后爱不释手。第一天一口气看了近200页,并将所有代码都在Visual Studio 2008上面跑了一遍。发现以前真的是太没有耐心了,差点而错过了这本好书(当时只看了30来页就放弃了),事实上程序的代码非常精炼,而且在Petzold的优美的文笔的带引之下,深入了解了WPF的设计理念以及WPF最核心的底层代码呈现;另外本书在基本原理方面着墨甚多,比如颜色的RGB以及sRGB,ScRGB的区别,以及为什么需要有三种颜色定义方式,如何更好的使用这三种模式,在传授WPF技术的同时,字里行间间接的传递了微软良好的开发经验以及解决问题的思考方式(为什么选择某种实现方式而不是以另外一个方式来实现),而《Windows Presentation Foundation Unleashed》对这些几乎没有任何处理,有些时候更多的是罗列代码。如果您是想深入研究WPF的话,我强烈推荐这本书以及其姐妹篇《3D Programming For Windows》(也是写WPF的,作者还是Petzold)。这本书虽然不是那种一见钟情的“窈窕淑女”(指没有插图),但是是那种是可以常相守的“大家闺秀”。
如果说获得第18届Jolt大奖提名的《Windows Presentation Foundation Unleashed》是倚天剑的话,那这本书以及其姐妹篇《3D Programming For Windows》就是屠龙宝刀。期待博文视点可以把《Windows Presentation Foundation Unleashed》以及《3D Programming For Windows》这两本书也引进翻译,双剑合璧,号令WPF。
我原来一开始这本书也是看不下去了,觉得太繁琐了,特别是第一部分,需要写很多代码,所以就转去看Adam Nathan《Windows Presentation Foundation Unleashed》,说实话,Adam Nathan的写作方式是比较吸引人的,带有很有精彩的图片,完全由XAML入手,但是美中不足的就是对底层代码处理不足,而这正是我想推荐的这本书的强项。
不久前看到国内电子工业出版社出版了这本书,由台湾著名IT名士蔡学镛翻译,在翻译质量方面也肯定得到了保障(以前看过他的《爪哇夜未眠》,文笔不错)。所以买了一本,拿到书后爱不释手。第一天一口气看了近200页,并将所有代码都在Visual Studio 2008上面跑了一遍。发现以前真的是太没有耐心了,差点而错过了这本好书(当时只看了30来页就放弃了),事实上程序的代码非常精炼,而且在Petzold的优美的文笔的带引之下,深入了解了WPF的设计理念以及WPF最核心的底层代码呈现;另外本书在基本原理方面着墨甚多,比如颜色的RGB以及sRGB,ScRGB的区别,以及为什么需要有三种颜色定义方式,如何更好的使用这三种模式,在传授WPF技术的同时,字里行间间接的传递了微软良好的开发经验以及解决问题的思考方式(为什么选择某种实现方式而不是以另外一个方式来实现),而《Windows Presentation Foundation Unleashed》对这些几乎没有任何处理,有些时候更多的是罗列代码。如果您是想深入研究WPF的话,我强烈推荐这本书以及其姐妹篇《3D Programming For Windows》(也是写WPF的,作者还是Petzold)。这本书虽然不是那种一见钟情的“窈窕淑女”(指没有插图),但是是那种是可以常相守的“大家闺秀”。
如果说获得第18届Jolt大奖提名的《Windows Presentation Foundation Unleashed》是倚天剑的话,那这本书以及其姐妹篇《3D Programming For Windows》就是屠龙宝刀。期待博文视点可以把《Windows Presentation Foundation Unleashed》以及《3D Programming For Windows》这两本书也引进翻译,双剑合璧,号令WPF。
| 我要写评论 |
| 查看所有评论交流(共48条) |








点击看大图






加载中...
