Preface

 

A number of years ago, the two of us worked at the same company and had to design a new form definition language for an entirely definitionally-driven system. The definitions were to be stored in XML. They had to be loosely bound to data definitions, and allow for complex behavior changes based on data. The individual elements of a form had their own properties, but also had to store properties that they didn’t care about but that were relevant to higher-level layout mechanisms. We built this long before WPF was even a glimmer of a concept at Microsoft.

We’d like to pretend that Microsoft saw our brilliant design and decided to copy it when creating WPF, but that would be a lie, and we only lie when we’re fairly sure that our facts can’t be verified elsewhere.

Nonetheless, WPF does encapsulate all the basic design principles that we had for our form definition language, and then goes soaring off to leave our pitiful efforts in the dust. When we first started playing around with (extremely) early versions of what was then called Avalon, we had a lot of “duh, why didn’t we do it that way” moments as well as, to be kind to our battered egos, a few “yeah, that’s how we did it” moments.