The whitepaper is a much needed guide around how workflows between designers and developers may be organized. Its a quick read at under 17 pages but is filled with little nuggets of high level information. Not the syntax or API variety but around how to approach any project that aims to utilize this technology.
There are tons of material on the web around WPF but most of them only deal with it at the low level. There needs to be more such papers that give a more detailed picture around the lay of the land. Best practices around the life cycle of building and maintaining a WPF app needs to be brought out.
The highlight of the paper, for me though, has to be the following passage – Technically, XAML is not a language itself but a .NET serialization and initialization language. Therefore, XAML can represent more than the features in the WPF platform; it can represent any custom controls, new animations, etc., as well as any .NET object graph. In a way, one might conceive of XAML as code represented as XML.
Okay, now re-read that passage and think for a while. I think a significant portion WPF’s genius has to be in that single idea. Because if you think about it the notion of representing UI with markup is not new(HTML, XUL etc as the paper points out), nor is the notion of having code attached to specific events(VB, most RAD apps work this way).
But to have markup represent an arbitrary object graph is something unique, with implications far beyond WPF. In fact in the product I work on we have plans to investigate this option further. We have already evolved a markup based DSL to capture the behaviour of our system. The ease of having such a representation to encode behaviour cant be underestimated and we have countless instances where this has been a life saver.
Now, to return to the whitepaper. I wish more layers would be taken up for assessment in this series. Specifically I would love to see the following topics i) Security implications ii) Best practices for graphically intensive apps iii) Interop options(with Winforms etc) and pitfalls.