I’ve been doing a bit of prototyping work with the aforementioned products, and thought that since Blend has an RC1 release, it was a good time to share a few thoughts…
The short story is that both VS and blend are pretty good tools for building in WPF, but together, they’re very impressive.
Visual studio has its usual strengths – intellisense is great, refactoring support is great, all that stuff. And, once you get over the hurdles of how it works (which I’m presuming are less for a designer than a developer), it’s very simple to get the UI exactly the way that I want it.
Which is a bit of work. WPF has a layout system that does a whole lot for you, but it does up the the object count a fair bit, especially since you compose controls to get what you want (Button doesn’t support images and text – instead you do layout of other objects that are hosted within a button).
In the old world, I might have a window with 3 buttons in it. In the WPF world, I have a StackPanel that has 3 buttons in it, and then each button has as its content another StackPanel that has a rectangle (for the button part) and a text label).
Ordering and grouping those is nicely done in blend.
It’s also very easy to do things like control styles, so that the look of controls can be controlled through a style rather than by modifying the properties on the control.
The only place where I think Blend falls short is when dealing with animations. The way in which they’re entered and represented is a big hard to grok, though I think it’s mostly just that it’s hard to represent something that evolves over time. So I’ve been doing animations in code rather than in blend.
I also don’t like having the event hookup done in blend. I’m invariably going to hook up to non-graphical events, and I like to be able to know what’s going on in code rather than having to look two places.
I’m happy that I don’t have to mention any problems with the two playing together. I have the same project open in VS and blend – they both monitor the project and pick up changes made by the other one.