How “Done” Is WPF?

Recently, Michael Neel (@vinull on twitter) made an interesting statement on Twitter:

I love WPF but it still feels only 50% implemented - Ex. why is there no built in support for closing a tab in the TabControl?

It sparked off a long discussion on a private mailing list. I joined in the conversation very belatedly with this post:

Funny thing, you don't hear web developers complaining that Ruby on Rails or ASP.NET MVC doesn't come with control x or feature y out of the box. I've said it many times that WPF is more akin to a web framework than a desktop framework. People coming from Winforms where everything is RAD RAD RAD expect a rich toolbox primed and ready for them because it's a pain in the ass to implement your own feature if Winforms is missing it. The simple fact is that with WPF it is easier to customize a control to fit your needs. Web Developers are used to this (well as long as they aren't coming from Web Forms). WPF developers with experience are used to this as well. I've come to realize that the difficulty in learning WPF is more of a difficulty in unlearning Winforms.
 
With regards to an official MVVM framework, while Microsoft could develop a prescriptive framework for MVVM (in fact Acropolis was an aborted effort at such), I don't think it's worthwhile. ASP.NET MVC was necessary because Web Forms, despite the loud arguments to the contrary abstracted too much to support such a thing. Case in point the Web Client Software Factory used MVP instead of MVC because Web Forms pretends to be stateful. ASP.NET MVC is to web forms what WPF is to Win Forms. The Separated Presentation is more explicit for consumers of the web framework than for WPF...but as has been discussed MVVM is the CORE of WPF.
 
Looking at both perspectives, I feel that WPF is where it needs to be with regard to controls and pattern support. Could there be more? Sure but features aren't free. I'd prefer the time be spent improving the foundation (e.g. performance, airspace, better DirectShow integration) as only Microsoft can do.

Published Wednesday, March 02, 2011 9:00 PM by Mike Brown
Filed under: , ,

Leave a Comment

(required) 
(required) 
(optional)
(required)