The Windows Presentation Foundation (WPF, formerly code named Avalon) is the newest framework for programming a graphical user interface in the Microsoft .NET 3.5 Framework (and available as a separate download on top of .NET 3.0). WPF is part of a suite of extensions to .NET which used to be called WinFX, and includes the Windows Communication Foundation (WCF), and the Windows Workflow Foundation (WWF).
I’ve actually had Programming WPF for more than a month, but it’s taken me some time to write this review. This is not because the book is bad, but rather because it’s simply that good. Instead of letting you all know about it, I’ve been using the information in the book to begin development using WPF already. In fact, of all the programming books I’ve reviewed over the last couple of years, I found this to be one of the most well written, and easiest to follow.
WPF has been around for a number of years in one form or another. If you’ve been to Microsoft presentations, you’ve more than likely seen plenty of presentations dating back to early technical previews when it was still called Avalon, and everyone was using XAMLPad to create applications. The problem with all of those presentations is that they tended to concentrate on the least useful, but most glitzy, features of WPF and XAML. Most demonstrations involved creating animations, and 3D graphics.
While the ease with which you can create those types of applications with WPF and XAML is amazing (and this book has chapters outlining how to do it), most developers in the business world have very little use for those features. It was refreshing to see this book place little weight on those features. In fact, the authors, Chris Sells and Ian Griffiths, are very honest about the limitations of WPF in creating 3D applications, and that DirectX and OpenGL have nothing to fear from WPF for truly complicated 3D graphics programs. What was even nicer to see was the depth in coverage of many of the other features that I’d never heard of before. In fact, I learned about aspects of WPF early on that made me wish I’d been using this for earlier projects.
The most truly useful feature for the everyday developers discussed is data binding, or what I’ve described to my colleagues as “data binding on steroids.” The authors go into great detail about all levels of data binding, and do so in such a way that you get a good understanding of what is being done under the covers. They do this by creating sample applications with limited or no binding at all, and then gradually replace hand coded functionality with the appropriate binding code. You very quickly get a grasp of how much the framework is capable of doing for you, as long as you master the correct XAML markup. In fact, odds are you will be overwhelmed with the amount of markup you will need to learn in order to take full advantage of the framework.
Other topics which are discussed are WPF themes and styles, printing and XPS generation, as well as the previously mentioned animation and 3D graphics. There is also an appendix which talks about Silverlight. While Silverlight does utilize XAML markup, it is a completely different topic from WPF, and the information presented is already out of date with the upcoming release of Silverlight 2.0. The appendix also covers interoperability with Windows Forms, but the emphasis in the book is on creating solutions using WPF from beginning to end, and using mixed code is discouraged.
Despite its breadth and depth into the topic, Programming WPF is not a reference book. Though it contains a great overview of XAML, it is by no means comprehensive. However, taken in concert with XAML In a Nutshell, which I reviewed earlier, you can easily jumpstart your development using WPF. For anyone who is interested in diving into the Windows Presentation Foundation in depth, I highly recommend Programming WPF. This may very well be considered the Bible of this technology.Powered by Sidelines