After fiddling around with XAML a little bit yesterday, an embryonic idea was floating around in my head about why this was tied directly to Avalon. In other words, if XAML is an XML syntax for constructing Avalon objects and properties and wiring them up with the appropriate event handlers, what prevents XAML being abstracted to work with non-Avalon objects?

Greater minds than mine have also noticed this same opportunity for abstraction, it seems, and Don Box has written a short sample that uses XAML to produce a console application. This is a really clever example of utilising XML to build a simple object.

Once coupled with some designer tools and a decent IDE, you can start to imagine XAML as a 4GL of sorts, due to its ability to compile into different languages. For some applications, you could imagine using XAML as an extensibility point. If you're an ISV, you could use the partial class capability of XAML to allow customisation of existing classes, rather than requiring users to use VBA or the like to build add-on solutions. For applications with more complex business objects, Don's sample raises the intriguing possibility of using XAML on the middle-tier.

For now, of course, most of us would be satisfied with a decent Avalon XAML designer rather than having to hand-code everything, but it's interesting to see how one idea sparks off others...