What's are the best readings to start using WPF instead of WinForms?

Read this questions:

  • How to begin WPF development?
  • Is there a WPF Cheat Sheet outhere?
  • Learning MVVM for WPF
  • Learning WPF and MVVM - best approach for learning from scratch
  • MVVM: Tutorial from start to finish?

Download and work through this Microsoft tutorial: Southridge Hands-on-Lab

Check this videos:

  • Mike Taulty's series of videos
  • Jason Dolinger on Model-View-ViewModel

And after that, take a look at StackOverflow questions tagged with both wpf and mvvm


Keep in mind that MVVM seems suited only to single window applications. I dived into WPF based on inexperience and general recommendations that it would suite better a kiosk project, especially one where the customer has given me photoshop images of all the application screens. Having cool graphics was a requirement for this project and I liked the vague resemblance of WPF with web development.

I found out a few downsides

1) there is no such thing as an official MVVM toolkit. There are a lot of them, all backed by an individual. A shot at a toolkit by Microsoft has been put on the back burner one year ago and there is no VS2010 support.

2) programming a multi windows application, sort of a simple wizard with back and forward, is plain nightmare. I got out of this with a clean design defining a delegate for each UI action and a command for each business action, but still I think it is too much involvement with a framework to be justified, and you cannot show the result of your tests to this customer expecting excitement.

3) You give up the habit of double clicking a button and adding some code. This leaves a nagging feeling of using the IDE against its nature. Basically you use Visual Studio as a text editor and an interface designer, still with a great help from the tool.

The upsides, so far are:

1) defining visual components is very flexible, fast and easy and you can choose between VS and Expression Blend. Animations are simple to create.

2) data binding simplifies the application. You define a DataContext and bindings and do not have to move data from the business logic to the interface yourself, as long as you have a property for everything that must be displayed.

3) You can reduce the amount of business logic in the interface to zero. It is easy to separate the application behaviour from its looks, so you can skin your interface in ten different ways with little effort and test all of your logic without opening a window.

4) you leave a door open to going with Silverlight if they ask you.

My conclusion is that if you have an MDI application in mind you might find yourself in big trouble. You should be aware that, if you choose WPF, you are ploughing ground for future generations rather than getting on a train that will get you there fast and easy. There is no established way to do things, especially those that are not covered by demos.

Toolkits, all things considered, are not so important and each of them will serve you well. In fact a couple supporting classes are enough to start and there are no fancy wizards, it is up to you to follow conventions.

You might even make your own if a few hours, once you understand what is involved in the logic. The downside is that you will have to really understand it well to bend the application your own way.

As I said above, I had to learn a lot just to show a new view when they click a button keeping the code clean. Take the time to see the videos cited elsewere on StackOverflow it will save you time.