Wednesday, October 27, 2010


Recently, I’ve get interested in practical usage of WPF technology and, as an obvious result, I’ve encountered plenty of obstacles as the technology is not as clear and straightforward as Windows Forms was.

I agree that from the theoretical point of view, WPF might be considered as a great step forward, but from practical one it is likely to be 2 steps backward. It is overcomplicated, it requires you to forget the well-known time-proven UI concepts and techniques, and to spend weeks and months on studying the brand new one. And even after that you can’t be sure that you are doing things right just because almost all things could be done in plenty of ways: code, styles, templates, etc. Not to mention the absence of several must-have controls in standard library, such as DataGrid, DateTimePicker, MaskEditBox, etc. on the moment of .NET 3.5 initial release. What are they hoping for? I don’t understand. Frankly speaking, it seems that WPF is bringing much more problems than it tries to solve. Remember blurry fonts and images, long application startup time, etc.

Moreover, I’m not alone in these thoughts. The Internet is full of stories on the subject. For example, when I was trying to find a solution for one of problems which could be easily solved in Windows Forms, I’ve bumped into an interesting and rather emotional post, which is titled as “What the HELL is wrong with WPF?”. Don’t miss it as well as its comments.

Some quotes:

- “Using WPF I can easily make a button which contains a spinning 3D cube playing videos on each face that turns green when the mouse goes over it, all without any C# code. Unfortunately, no one would ever want to do that, while it’s easy to imagine a situation wherein you’d want toolbar icons to gray themselves (like, I dunno, every Windows application ever made).”

- “I fucking hear ya! I’m also struggling with this shit every day just to discover that MS – again – really went out of their way to accommodate every possibility imaginable but rendering the whole system/concept unusable on the way.”

- “…I mean SERIOUSLY? What the fuck man! Win forms were a beauty, then why the flying fuck you want to release something ENTIRELY different and say that its the way forward especially when winform isnt broken. I mean why fix something when its not broken.
I am so sick of MICROSOFT and their policy of shoving their crappy pieces of junk software down our throats. They know people are smart and don’t want their shit, so they start issuing threats of disengaging old software unless you buy the new one.”


  1. Nice post, though, I can not fully agree with you.

    "it requires you to forget the well-known time-proven UI concepts"
    Why? You can still drag&drop controls from toolbox and set their properties as you would with delphi or win.forms, no difference at all :)

    "you can’t be sure that you are doing things right".
    We do not have to make things "right" while programming. No one dies if you do not use Templates where they could be used.

    "blurry fonts and images".
    Yes, that's where I agree with you, it is really annoying.

  2. Partially agree, but I think I understand the reasons of such behavior. There is almost always a trade between being innovative and compatible with predecessors. In some cases it's easy to satisfy both requirements (and most successful innovative technologies usually do this), but in many other cases it's quite hard. And Microsoft has chosen "hard" road this time. Actually I feel they do this too frequently during all the age of .NET. On the other hand, likely, they're nearly the only company having any chance of pushing such innovation to the market.

    I also agree WPF itself isn't ideal, but being crude and strange is pretty normal for any relatively new technology.

    True, there are really tons of complexities (e.g. styles that allow to do almost anything), but if you'd try to find WindowsForms analogue of features they're related to, you'd discover there is simply no close match.

    Personally I like WPF much more then WindowsForms - mainly, because of full MVVM support.

  3. Sorry, "having any chance of ..." -> "having a chance of".