I've been working on a project that is extensively utilizing WPF. Every day I can't help but think, "really?, after 6 years and 4 major releases it still isn't polished?!?!?". I mean, seriously, it was released with .NET 3.0 in November 2006. I keep encountering things that are just, well, to be left with little explanation. Why is it that I have to bind a custom control to a label and then bind another control to the label control to get the binding to work correctly? One would expect that I could just bind the custom control directly to second control.... but.... nooooooo. I can just hear what you're thinking. That makes no sense. I must be doing something wrong, right? The only difference in these scenarios is that ***what*** I'm binding to, not how I'm binding. Additionally, you would think that "ToString" would just work with binding, but, alas, no... again, you have to bring in type converters to get that working the way you'd like.
Now with all that said, binding in WPF is AWESOME! Even with these gotchas that I've encountered, the ability to keep separation of display from code is well worth the pain thus far. I'm also sure that I'm missing some little tricks here and there; which does lead further to some of the frustration. Computers are supposed to make things easier; and technology in general is supposed to progress us to that goal. I stick to one of my main comments regarding WPF, "It makes the extremely difficult much simpler, however, it significantly raises the barrier of entry... making the simple not so simple."
It's an awesome technology; however, as I said, I think it could be better.