I've spent the last several weeks learning WPF.

First, I read Windows Presentation Foundation Unleashed by Adam Nathan. Very good book, it provides a wonderful overview of the majority of the technology as well as some of the reasons for certain decisions.

Then, I chose three projects to update to WPF.

  • The first was a data collation app that I had written under Windows Forms. (I've actually put this aside since it turned out to be too complex for what I was trying to learn.)
  • So the first became an update of a development/debugging tool I had written some time ago called TraceMonitor, that captures traces from Trace.WriteLine & Debug.Writeline. This one is just about done, and I'll release it here after I knock out a few niggling details or leave them as they are. This turned out to be a good one because it seems to have solved several screen drawing issues that I was having.
  • The second will be a small graphics program that I wrote to draw snowflakes. Nothing complex, but it'll help me sort out Paths, rotation, and maybe even 3D, if I feel so inclined.
  • The third will be an update of a Solitaire program I had written a while back but never finished due to drawing inconsistencies. WPF appears to have all of the technology wrapped up to do the display the way I wanted it.

All in all, it's been pretty informative.WPF is very powerful. It also has a somewhat steep learning curve.Some things are relatively easy, but as soon as you start doing anything slightly more complex, the difficulty really seems to ratchet up. Fortunately, it does seem to eventually plateau, and at a point where you can do a lot, at least with data binding, and a good solid foundation to build upon.

I'll release (and re-release) some of these tools as I go along, with some thoughts and pointers that might help others.