I'm a .Net, C# and WPF programmer. Is Expression Blend worth it? [closed]

I mean, as a normal developer, is there something that I will achieve with Expression Blend that I won't using VS? I have no idea of Expression Blend and at first sight didn't look very friendly / easy to learn.

What do you thing out there? It's worth the time learning to use it or I will do the same as I do with VS?

Thanks!

EDIT: I know what Microsoft says about the tools. What I want to know is if you, as a developer like me, tried Expression Blend and found that it was a waste of time or you thought it was a good tool and you stopped developing the WPF GUIs from VS and switched to EB.


Solution 1:

I have it and rarely use it.

I greatly dislike all the extra markup that gets added to the XAML files, and prefer to know what I'm doing to just dragging/dropping items.

The few times I have used it have been to pull out the default styles or templates of a control, or to build something like a gradient, animation, or path, and then copy/paste the XAML into my project.

It's nice if you're into drag/drop coding, or if you're working on a large enough team to be have a separate UI and Coding team, but other than that I don't use it for solo development since I have to maintain the XAML mess it generates.

Solution 2:

I stopped developing GUIs in VS and switched to Blend. It was very confusing at first, but I'm now glad I took the time to learn Blend. Most things that you can do in Blend can be done in Visual Studio, but Blend makes them much easier (once you learn how to do it). I constantly astound my fellow developers when I show them how to do something in Blend because a simple drag and drop can replace quite a bit of typing. The thing I really like about Blend is that the design surface is accurate while the Cider WPF designer in Visual Studio often lies to you or misleads you (and is just a piece of crap in general).

Blend can do the following things that Visual Studio cannot:

  1. Create and manage visual states. (I guess you could do this all by hand in VS, but that's just insane for anything even moderately complex.)
  2. Extract and modify control templates.
  3. Easily work with behaviors (I can't imagine doing a FluidMoveBehavior by hand in VS).
  4. Generate sample data for use at design time (reduces coupling of your software components).
  5. WYSIWYG animation editor. (In VS you have to run the application to see the animations; Blend gives you live previews.)
  6. Built in transition effects and easing functions.
  7. SketchFlow (great for making a high fidelity mockup that you can show a client/stakeholder).
  8. WYSIWYG path editor (great for doing simple vector artwork).
  9. WYSIWYG gradient editor.
  10. Import artwork from Photoshop and Illustrator.

These are the sorts of things that can really set your user experience apart from every other freelancer out there. And for the record I'm a developer with no design experience.

Solution 3:

  1. It's much easier to edit default styles as you have option Edit a copy which is extracting default style into the new one and you can change it
  2. I find also very useful to edit additional styles like generated content as you can easly see what additional styles control has.
  3. If you are doing animations it can make a difference as you can actually see during desgin time how is it behaving
  4. If you have a dedicated designer in your team it is much more friendly for them as it's similar to photoshop/flash editing software
  5. From my point of view if you are working in a team its enough to have only few expression blends

Solution 4:

I always have Expression Blend open next to Visual Studio and switch back and forth between the two when working on Silverlight, WPF or Windows Phone Projects. These are my main resons:

I use a lot of animations and visual states in my applications. To create these you would like to see what is going on. In the visual studio you can't (yet). It's almost impossible to write a real animation or visual state by hand.

Managing resources is something I use Expression Blend for too. Creating new dictionaries and moving resources around is very easy in Blend. It even notifies you when you try to delete a resouce you are using in some place. Finding and editing a resouce is very easy. With a click of a button a property is converted to a resource and ready for use in other places.

One other thing I use a lot is Sample Data. I would like to see my forms and lists filled with data when creating them. Depending on the state of the application I create sample data by hand, use an xml export from the database or generate sample data from code.

Databinding becomes a lot easier when you are using sample data. Just drag'n'drop the property on a textbox and you'll have a binding. Through the databinding editor you can finetune the binding the way you want.