I'm constantly astonished how difficult WPF/XAML makes it to do very simple things. I've got a ListBoxItem, and I want to find the name of a control within that item. This is a very common scenario, and I expected to be able to do that with one line of code: something like this:
TextBlock myTextBlock = myListBoxItem.FindName("myTextBlock");
Instead, according to the example above, it takes 14+ lines of code to do what you should be able to do in one. And the content of those 14 lines of code would be completely undiscoverable to anyone who didn't have an extremely good understanding of how WPF works under the hood.
If this was an isolated example, it would be one thing: but in the last month of learning WPF (I'm admittedly still a newbie), I've come across dozens of similar examples, of things that should be simple to do, but which are made very difficult either by the structure of XAML, or by the immaturity of the framework (despite the three years that MS has had to fix it). Extrapolate this across even a fairly simple application, and you've got all the makings of a horrific maintenance nightmare, not to mention untold hours of troubleshooting and research. In all the code reviews at Microsoft, did nobody stop and ask, "Does anybody else think this is too complicated?"
WPF and XAML, despite all the hooplah and hype, still seem to be a long way from prime time, in my book. And I'm not yet seeing a ton of evidence that VS2010/.NET4.0 is going to fix this.