So you're new to WPF or Silverlight and need to know how to get
started? Here my "How to Get Started in WPF and Silverlight"
I'm going to assume you know what these
technologies are (at a high level), just not how
to use them.
1. Set up your Environment
The first thing you'll want is Visual Studio 2010. At the time of this
writing, it was in RC, but it will be releasing soon. Visual Studio
2010 includes a decent Xaml editor that is far better than what we
had in Visual Studio 2008. (Xaml is the markup language that WPF
and Silverlight use for defining the UI) In addition, if you're
targeting Silverlight 4+, you'll need VS 2010.
Incidentally, the shell of Visual Studio 2010 was written in WPF.
Yes, you can use the free editions of Visual Studio for Silverlight
or WPF development.
It can be a bit much when starting out, but at some point,
you'll likely need Expression Blend if you plan to do any real
UI/animation work. Blend works for both Silverlight and WPF. It's a
designer-oriented tool, so it looks a bit different from Visual
Studio. I wouldn't grab it right away, and instead wait until you
You'll also want to check out my Essential WPF/XNA/Silverlight Developer and
Designer Toolbox article for ideas on what other tools may be
helpful to you.
2. Follow one or more of these Tutorials
Various blogs, and the community sites have great getting
Much of that information is available on the get started pages.
The Silverlight one is more current than the WPF one. We're working
3. Get a good Book
Some folks learn really well by reading books. If you're one of
this group, this section is for you.
- My current favorite WPF book is Windows Presentation Foundation Unleashed by Adam
Nathan. The version that's out now is a bit outdated, but the
concepts still apply. I understand Adam is working on a WPF4
- You can get in on early (digital) releases of my Silverlight 4
book as well.It's a book for folks who have written a fair
amount of code, but haven't necessarily dabbled in
4. Follow these Bloggers
Blogs are the best thing to come about in the development
community since usenet. There's a lot of great information out
there. There's a lot of crappy information too. For that reason, I
recommend you start with these blogs and expand out from there.
- My blog. Besides tutorials, I put out a
weekly link list of WPF, XNA, Windows Phone and other client
- Tim Heuer -
Program Manager for Silverlight.
- Jesse Liberty - Program Manager for
Silverlight. He puts out tons of great "getting started" type
content. Jesse and I both work for Scott Hanselman on the same
- Mike Taulty has a lot of great WPF and
Silverlight content on his blog.
- WynApse, creator of Silverlight Cream. He puts
out a daily link list of all that's good in Silverlight land.
5. Join these Communities
Once you get beyond the installation phase, you're going to grow
faster if you leverage the community.
- Join the forums on Silverlight.net and WindowsClient.net . Both are great places for
learning how other folks work with these technologies.
- In addition, get on twitter and follow some of these lists:
6. Build a Simple Starter Application
Start with a hello world app, similar to the demos. Some folks
start with a Twitter client, but I don't recommend that unless
you're really committed to the idea. The reason many folks get
discouraged when learning a new technology, is they pick a starter
app that is way too complex.
Start small, and build in iterations. You want to keep hitting
milestones that both excite you and let you know you're making
progress. For example, get a window or page up, then populate it
with some fields, then handle navigation (if any) then worry about
hooking into a data source. Refactor all the way through so you
continue to have something you're learning from and proud of.
Really exercise data binding in the app you build. Binding is at
the heart of Silverlight and WPF.
Oh, and remember, just because you're working in WPF/Silverlight
doesn't mean you need to make the UI complex or fancy. Look at
Visual Studio 2010 vs Visual Studio 2008. The differences are
subtle, not in-your-face.
7. Wash, Rinse Repeat
Iterate on your sample app, or start new ones. Either way,
expand your knowledge of things like styles, templates, binding,
navigation and other core features.
8. Only then, worry about Patterns and Practices
You'll hear a lot about MVVM/ViewModel, MVP, Inversion of
Control, TDD etc. Those are all excellent things to learn, but get
the basics down first. When learning a new technology, folks often
go in assuming they can tackle the same level of project they would
with their technology of choice. Remember, despite all you've
learned, you're a beginner at this specific technology.
Have other things that have helped you get started? Let me know
in the comments below.