Given the investment that MS is making in their new technology, WPF and its derivates (ie, Silverlight) are gonna be a very popular technology in the future and propably nice technology for the MS environment but so far I find this technology very inmature. Here you go, some reasons:
1. Visual Studio 2005 and the Cider plugin for XAML edition is plenty of bugs
2. MS Expression Blend is one of the alternatives to VS for GUI designing but it is so "inmature":
a) The xml editor is as simple as the notepad, it doesn't have intellisense, it doesn't have capabilities to indent the code, it is just a notepad with coloured syntax
b) The properties palette doesn't show all the properties than an object has and given the lack of intellisense you have to search the API in the msdn website
c) The designer behaviour is very weird and it is a nightmare if you have to relocate the controls in the GUI or just resize a grid to make it smaller (it makes the controls inside smaller as well!). I miss Glade and Stetic so much 🙁
d) The designer doesn't work on custom made controls, as you can see in the screenshot (even though the xaml is valid and the app works).
3. You miss a lot of things in the API, ie. you cannot change a selected item in a treeview programmatically because that property is readonly. Well you can do it using reflection with a few tricks, ... unbelievable. In general it is rough to change the GUI programmatically, I do think that they haven't written many applications using their own API
4. Simple controls have annoying bugs. One of the worse for me is when the SelectedItem in a ListBox never gets unselected even though you called UnselectAll, or you cleared all the items, or you assigned the SelectedItem to null. In those cases you have to manually get the SelectedItem, go to the Items property, and invoke the Remove method passing in the selectedItem.
5. The behaviour of some controls is not natural. For example, what you expect when you have a treeview and you click an item in the tree with the right mouse button, is to see a context menu and obviously to get the item selected. Well, the current treeview doesn't select the item with the rmb, you have to click with the left one first. And it is not straightforward to change this behaviour programmatically because you have no way to know which item the user clicked. Another example: if you add the width or height properties to an image it loses the size aspect ratio even if you write its real dimensions. You have to remove that properties in order to display the image properly.