@brian.shapiro:

Unless you're building something small like Northwind you have to develop a lot of (yes re-usable) components before your users see screens coming out of your development efforts. Customers paying for business solutions don't care if the framework you are using is fully object oriented and thread safe. Such things only matter to the academic.

And thread-safe? Now there's a feature! The framework maybe "thread-safe" but it also adds another level of complexity when it comes to threading because now each and every bit of code I write I've got to be painfully aware of what needs to be dispatched on the UI thread vs. what I can run in the background. Take collection views as an example; they're collections but yet you can't do much with them unless the operations you perform on them are done so on the UI thread. Want to refresh them in a worker thread? Good luck with that.

Sure you can forego a lot of things in WPF. You can even build yourself a nice non-reusable ball of mud. I guess I'm hoping that Microsoft's framework and tools developers would consider how the whole ecosystem works together to provide its customers a cost-effect means to create software for business. Relative to Microsoft's past work WPF isn't there yet regardless on how object oriented and thread-safe it is.