目前,对于“WPF”这个词的讨论似乎在降温。在Windows界面编程上,大家更多地关注一些“其它”的技术。世面上出的书也观以“Windows 8开发”之类的名字了。但实际上,明眼人一看便知,Windows 8等新的界面开发技术在很大程度上还是脱离不开XAML,以及XAML相关的技术的。也正因为如此,WPF/Silverlight开发的相关技术依旧有用,而且很有用。

我从2011年开始接触WPF与silverlight开发。到目前为止,一直处于“业余爱好”的状态。也即:我的工作中不会用到WPF与silverlight,也没有做过什么这方面的项目,甚至我目前的工作都不会用到C#。我只是感兴趣,所以想学习一下。

对WPF有了基本的了解之后,我有两点深刻的体会:1. WPF/Silverlight的框架非常赞!2. 要进行基于WPF与silverlight的控件开发比较难。

为什么说它的框架非常赞呢?它将控件按树形结构组织,同时基于这个结构所衍生出来的诸如“布局”、“路由事件”、“依赖属性”等等特性,都是其它UI框架所未见过的。这种方式使得整个界面的组织可以更加清晰,便于管理。我个人认为:从技术上来说,这套框架比世面上其它的UI编程框架领先了一个时代。

为什么说它的控件开发比较难呢?其实主要原因是,目前世面上讲这方面的书比较少。目前世面上讲WPF/Silverlight的书不少,但大部分都是“基础型”,即从什么是xaml讲起。由于这套框架里面包含的东西很多。如果从基础讲起,那么即使是一本厚书,能够分配给控件开发的内容也会少之又少了。同时,由于这套框架引入了诸多的新概念,如何基于这些概念,设计一个好的控件,其实并不那么容易。就像我之前,在C的基础上学习C++时,可以很容易地了解其中的一些概念。但真正怎么使用这些概念,设计一个优秀的类,则仅仅通过一本C++“入门”书,是了解不到的。一定要看一下诸如“effective C++”这样的书,才能有所体会。

界面开发的一个重点就是设计吸引人的控件。而WPF/Silverlight提供的大量功能也是用于帮助我们建立一个吸引人的控件的。但在建立新的控件时,该使用其中的哪些技术?怎么使用这些技术?则是一直困扰我的问题,相信也是困扰很多开发者的一个问题。

事实上,我在在读了一本“砖头书”,初步了解了WPF的基本技术后,就想系统地学习一下这方面的技术。但发现这方面的书很少,网络上对WPF控件开发的讨论有一些,但都不成体系,也不能系统地解答我的问题(该使用其中的哪些技术?怎么使用这些技术?)。这时候,我发现了《WPF Control development unleashed》。这本书系统地回答了我的问题,非常值得一读。

为了保证对这本书有更深入的理解。我采用了一种“很慢”的阅读方式——翻译。随读随译。读完本书,也就将这本书译完了。在翻译的过程中,遇到书中看不懂的地方,还真的进行了一番研究,也修改了原文中的一些错误。在翻译之后,又将原文合上,重新读了一下译文,根据我的理解,将其中我认为句子不通顺的地方修改——最终形成了这个连载的原型。

在翻译完本书后,还想过出版,让WPF的专家,刘铁猛老师看了一下译文,刘老师非常认真,认为我的翻译与原文在一些细节上是有差异的,可能会误导读者(我想,这与我在之前根据自己的理解,将其中认为句子不通顺的地方进行了修改这个操作有关。同时,我的英文比较差也是原因之一),因此希望我修改后再考虑出版。与此同时,出版社由于本书的原版比较老(是2009年的书),考虑到出版后不一定会卖得好,因此也就不再出版了。

在这个背景下,我想先把我的翻译结果放到网上吧,供感兴趣的同志们参考。我会大约2天放出一章。但要声明的是,由于我目前没有什么时间,因此对本书译文进一步的修正工作要放一放才能进行了。翻译的文章与原文在细节上存在一些差异,因此仅供大家参考。如果大家在阅读时发现了什么问题,请即时告知我,我会尽快修正,并将修正的结果放到网上的。

虽然本书最终没有出版,但我还是受益良多!除了学习了一些控件开发的知识外,还对如何严谨地做事,做翻译都有了一番体会。在这里,我要十分感谢刘铁猛老师,刘老师的严谨给我留下了深刻的印象——也让我体会到了这项工作中存在的严重的不足。他的教诲无论是对这项工作本身,还是我以后的其它工作,都有很深远的影响。同时,我也要感谢我的博士生导师吴及老师以及参与本书出版工作的张濮,朱雪玲编辑,吴老师帮我联系了出版社,张濮,朱雪玲编辑热心地帮我处理出版相关的事宜。虽然本书最终没有出版,但正是由于你们的工作,才使我有了这一段难忘的经历。真的非常谢谢你们。

最后要说的是,将这本书的译本放到网上是我个人的行为,如果我的这种行为(即将我的翻译结果放到网上供大家下载),损害了您的利益,请您及时告知,我会及时终止的。

写了很多,不知道有多少人真的认同这本书的价值,真的会下载呢...呵呵。