Introduction
Charles Petzold is usually a very popular technical author, so it was unusual to see that this book has had some quite harsh and critical reviews on the various book sites such as Amazon.
The gist of most people's complaints seem to be:
(a) "There's no XAML until Chapter 19" and/or
(b) "There aren't any pictures".
OK, so I'm summarising and slightly trivialising the complaints, but that's essentially it.
The Complaints - are they justified?
a. No XAML
People making this complaint have in my opinion totally missed the point for several reasons.
Firstly, this is not Charles Petzold's "How to Write XAML" book. It's a book whose title explicitly tells you that it will approach WPF from both the code (C#) and markup (XAML) perspectives. Unusually (actually I think it is uniquely) he doesn't mix and chop up the two approaches, but deals with each of them in isolation.
Secondly, WPF is not XAML. You can use XAML, sure. You'd be silly not to in many situations. But XAML is only one part of the big picture. As this book clearly shows, you can successfully create an awful lot of WPF output with code alone.
b. No Pictures
Normally I would have some sympathy with Complaint (b) because it's always nice to see what the code samples should produce. But if you use this book as the author intended and actually run the samples yourself you will gain far more than any quick glance at a screenshot would give you. You will gain insight and experience in how to master this new technology.
So I really don't think there is any real justification for the outcry.
So, what about the book, then?
The best (I think, only) way to get value out of this book is to read it.
Yeah, yeah,I know that sounds trite: It's a book, you read it.
But, no I mean really read it - word by word, line by line, section by section, stopping to think about what you've just read several times per page. And then trying out his samples. Even the almost-too-simple-to-waste-my-valuable-time-on looking ones. Followed by trying out his suggested alternatives and your own tweaks as questions, thoughts and possibilities occur to you as you do that.
This isn't a "skim through it and get the idea" kind of book. In my opinion it isn't even a "dig into the index and find an interesting topic to look at" book. At least not until you've got a good grounding under your belt.
This is a book that very carefully works its way through the requirements needed for the reader to achieve a thorough understanding of the major concepts. One of the reasons why I recommend reading it - and using it - from cover to cover is that, even in the early basic chapters little gems of code and explanation are slipped into the narrative or the examples. Often these begin to deal with more complex topics that you will come on to in more detail later.
It is crammed full of detail. Mostly it's the kind of detail that you really need once you've got past the "let's play with WPF and see what you can knock out in a couple of hours" stage. The detail you need when you move on to the point where you want to do something that isn't necessarily easy out of the box, but is achievable if your understanding is built on stone, not sand.
If I have a complaint, it's a minor one: occasionally he lets the Math geek get out and play a bit more than strictly necessary, but even that is fairly rare.
I'm also not 100% convinced yet of the value of the chapters which create panels in procedural code as this seems to work against the overall principle of separating look and logic. That said, I'm sure that knowledge of some of the procedural code versions of XAML will come in useful at some time or other - and it's certainly easier to pick them up from this book than searching through the documentation.
I'll be honest, I'm much more a "dip in a book and read the interesting bits" kind of reader by inclination. Superficially you get better (or at least initially) faster results. But, as we all come to know, unless you thoroughly understand the fundamental concepts then sooner or later you are going to struggle. And so with this book I'm putting my money where my mouth is and working my way through it. I still have quite a long way to go, but the rewards in terms of increased knowledge have already been substantial (and I've been working on WPF for several months already prior to picking up this book).
The code samples are in C# only. However, thanks to some of the guys on the VB Team at Microsoft some chapters have been translated to VB.NET and there are more to come. At the time of writing, the first three chapters are available and you can access them from here. You can link back from that Chapter 3 download by Young Joo to the original first two chapter translations made by Patrick Dengler. I'm told that six more chapters are on their way before the end of November. In the meantime, for later chapters, there are enough free translation sites around for this not to be a problem. And in fact I'm finding that generally the curly brace syntax isn't a huge barrier to understanding.
(I have uploaded some conversions I've made myself and will leave them available until the "official" VB Team ones come on line. You can see Chapter 4 here, Chapter 5 here and Chapter 6 here.)
Summary
If you are committed to fully understanding WPF then this book is one you really should buy. By all means get others too. I already have several; they all serve their purpose, are very useful and I refer to them regularly. But when it comes right down to the "roll your sleeves up, go sit in a quiet place with book and PC to learn, really learn, WPF" then I think Charles Petzold has produced a (not so little) gem that will be truly helpful to you in your learning endeavours.