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.