a week with WPF
Although WPF has been officially available since the release of Vista (or months before), I would guess that it is just beginning to be seriously experimented with using Visual Studio 2008 Beta 2. Intellisense makes writing XAML easier.
There are so many new concepts such as attached properties, dependency properties, routed events, templates and styles that before now, seemed like individually interesting concepts but I didn't see how they all fit into a big picture. I'm starting to get it.
And with WPF the underlying language of Silverlight, needing to know WPF's moving pieces and higher-level concepts will gain momentum in the months leading up to February 28, 2008 -- when a slew of Microsoft tools seem to be converging on for release.
I believe WPF developers will benefit from understanding a few basic design principles. Some developers wear almost a badge of honor that they don't know how to do any graphic design stuff. I understand. If I try to draw something, you would be hard-pressed to know whether it was my drawing or a third grader's.
I marvel to see someone take piece of paper and pencil and draw a realistic looking face or tree or horse (some girls were really good at this). Here's an example of a YouTube video showing how to draw eyes
I can see why people a few thousand years ago thought people who could draw on stone walls representations of animals with just burnt wood sticks left after a communal fire were uniquely gifted (in the sense that a gift comes from a giver).
WPF provides different types of panel controls where things can be arranged in patterns. Panels can be arranged together or nested within a top level design layout (panel). With gradients and margins and transparency, I'm sure the number of different UIs is infinite. But a few techniques, repeatable steps, patterns if you will, make designing an attractive and functional user interface very doable.
Just as we look on graphic design as inspired and magical (dependent on an inborn artistic gift that is either there or not), I bet many artistic folks are amazed by someone able to create a working Windows application. They don't know there are a few simple things to learn, a few techniques, a few conventions to follow and voila, you can create a program that does something interesting. You set out with a set of tools and an idea of how to proceed, and you build the pieces that work together to make interactive software.
Same thing with graphic design. It's helpful to watch a series of pictures that show how a design starts with a simple idea, and gets progressively more intricate as layers (colors, textures, fonts, shading) are added. Often, in programs such as Adobe Illustrator, these are literally on different layers that might be combined with various transparency levels or special effects such as using a gradient on one layer to reveal with graduated transparency objects on the layer underneath it.
In a future post, I will show some examples of design principles that map to WPF functionality. In the meanwhile, I'll keep learning WPF so that the map will lead to interesting places.