Welcome to Pete Brown's 10rem.net

First time here? If you are a developer or are interested in Microsoft tools and technology, please consider subscribing to the latest posts.

You may also be interested in my blog archives, the articles section, or some of my lab projects such as the C64 emulator written in Silverlight.

(hide this)

10 things Beginning Silverlight and WPF Developers Need to Know

Pete Brown - 26 August 2010

Another talk I really enjoy doing is the "10 things" talk. I recently gave this talk at DevLink 2010 in Nashville.

This covers 10 things that every Silverlight and WPF developer should have in their core skillset. It's a semi-beginner topic for accomplished developers who don't yet know Silverlight or WPF.


The slide deck itself is pretty much empty. I tell the audience that that's it for slides, but then point out I slipped one by them and re-implemented the slide deck in WPF 4 :) (advance the WPF slides using page up / page down)

The 10 things are:

  • 9. How to Hand-Code XAML
  • 8. How to Use Expression Blend
  • 7. How to Write Value Converters
  • 6. Threading
  • 5. Async Programming
  • 4. An Architectural Pattern (like MVVM or similar)
  • 3. The Layout System
  • 2. Dependency Properties
  • 1. Binding
  • 0. Our limitations, and when to call in a designer.

Both the pptx slide deck and the WPF slide deck are included in the zip file. I'll do a more comprehensive blog post in the future covering the 10 items and pointing to learning resources.

posted by Pete Brown on Thursday, August 26, 2010
filed under:            

23 comments for “10 things Beginning Silverlight and WPF Developers Need to Know”

  1. David Martinsays:
    Just downloaded and unzipped. The pptx appears to only have 3 slides. First one is shown here on your post, the last one just reads "End of Line", and the middle one is your "Me" slide. Was this intentional or are there missing slides?
  2. Jeff Albrechtsays:
    For Petes Sake!

    When I saw a tweet refrencing this post I thought: "Just the ticket!" Now I'm feeling like today is April 1st! :-)

    I have some ef and ria services working, I've added an additional page to a SilverLight Application but I sure can't figure out where to stack my pannel! If ya get my drift....

    How about just that first slide? Some pointers to a quick run through of the xaml / xaml designer.

    c ya.... - jeffa
  3. Kelpssays:
    The 10 things list is spot on. If anyone works with Silverlight or WPF and don't follow these 10 simple rules, it is very likely they are programing the same way the we used to do in Windows Forms / Web Forms.
  4. Jeff Albrechtsays:
    Here are a few resources I found helpful as I begin Silverlight development.

    Build a twitter desktop ria application

    Learn expression blend

    Scott Guthrie's blog post on Silver light 4 training kit
    I highly recommend this the training kit as it has links for
    first time silver light developers and for those developers
    already using Silverlight some what's new in ver 4.
  5. Bart Czernickisays:
    I agree on all of them except the MVVM pattern and replace it with the "rendering/animation engine".

    You can write an application without MVVM. MVVM is not going to be easy to understand for everyone especially if they are new to Silverlight/WPF. Also if you are new to Silverlight/WPF you will be trolling the blogs for examples...which do not include MVVM (unless talking about it directly).
  6. Petesays:
    Notice I said "like MVVM". I'm not saying you need to learn that specific pattern (although it is the most popular right now). You need to learn *a* good architectural pattern.

    Without a decent patterns, you'll find yourself backed into corners where binding doesn't work, or you have to do really hokey things to share data or deal with async data loading.


    All good liks. Thanks for the plug. That first video was one I did for MSDN :)

  7. TheLutdditeDevelopersays:
    I just completed a Silverlight version of an ASP.NET website. The goal was to reproduce more or less the same site as the one already in operation which used ASP.NET. I find that this is a pretty good way of getting an accurate spec for a test project.

    That meant that we did have databinding, wcf data access (async as standard in silverlight), and a few surprises (such as the navigation model) which is not quite as intuitive as response.redirect.

    The result does what it says on the tin, but lacks the Silverlight candy and perhaps the whole raison d'etre for using Silverlight.

    Starting out I knew there would not be the resources for a designer (so pre-requisite ◦ 0. Our limitations, and when to call in a designer was realized, but not acted upon)

    Such an exercise really helps you focus on the skills required, the next steps would be:

    1. work with a designer to get the true essence of Silverlight.
    2. work alongside more experienced SL developers to see how things could have been implented differently, this project was really a 'do what you can and make sure it works'.
    3. More disappointing than the lack of Silverlight Candy was the problems I encountered trying to use the mouse wheel in Firefox and using the mouse controls on a laptop, again in firefox. Everything worked fine in IE8. MS and the browser developers need to a better job at cross browser compatibility for Silverlight to thrive.
    4. I wish I had one of these GOM machines that could handle multiple instances of VS2010, VS2008, Expression Blend, Internet Explorer 8, Firefox, and Superpreview 4 (for IE 6 compatibility checks), Photoshop, SQLserver, local IIS, Tweetdeck, and Office without skipping a beat.

    Thanks for this article Pete, I will work to hone my basic Silverlight Skills. In fact I am sure that someone has just finished a book about Silverlight 4 in Action, must be sure to place an order :)

    BTW if anyone is interested you can see the results at http://www.cheap-ipods.com

    P.S. Would still like to see video or read final article on GOM build. Are you still trying to get 7.9 for the processor?
  8. Nicksays:
    I agree with everything except that I would not emphasize the requirement for hand-coding XAML if you know Expression Blend very well. What you can do with Blend will take you many more keystrokes and a lot more time by doing it manually in XAML. However, you should be able to read and understand XAML to make the necessary edits where Blend falls short. I'm often adding elements to a recource dictionary directly in XAML for example.

    Hand-coding an animation in XAML, or even something as simple as a button for that matter, is just a waste of time now that we have Blend. It's nearly as inefficient as hand-coding HTML these days. Hand-code what you need, but get the bulk of it done in Blend.
  9. Petesays:

    I partially agree. IMHO, I wouldn't trust a web developer who needed a tool to write HTML. Same goes with a XAML / Silverlight / WPF Developer :)

    If you're an early adopter, it's even more important. Blend support typically doesn't show up until later in the dev cycle.

    The tool should be an efficiency, not a crutch. Of course, complex animations, curves, etc. are far more easily done in a tool.

  10. Petesays:

    Not sure where you're going with that. Are you saying that all developers should be able to be UX/UI Designers?

    Also not sure what you're referring to by "remain a Step 2"

  11. Clinton Gallaghersays:
    Yes, without quibbling about scope I contend we all do in fact lack fundamental competencies in part or in whole at some point in time as implied at Step 0 even if you were only referring to yourself; reality proves "we" all share this same dilemma be it at developing or designing.

    So yes again, I am also saying all "developers" should therefore nowadays be able to design and develop an entire "application" recognizing RIA tooling and code generation having become what they have become --and-- of course the converse must also be asserted.

    Ever hear of LightSwitch ;-) How would some developer feel standing in front of a customer trying to justify hiring a "designer" because you as that developer cannot or worse yet, will not point and click or copy and paste glassy looking buttons in an orderly and logical manner? Not providing this competency will soon make --the developer-- the Dependency Object remaining stuck at Step 2.

    I went through this with CAD during my career as an architect in the late 80s through the early 90s. Same exact dilemma. Same exact results. When tooling like AutoCAD made it possible for designers and developers to become one and the same the customers began insisting on buying consolidated services from those that did.

    I'm really trying to make the Step 8s work for me as much as possible as I am working at making all other steps so I can in fact have more time to master develpment itself this being because I think I have had to come to accept that by its very nature that which we are mutually involved in compels us to become and remain perpetually incompetent.

  12. a avrashowsays:
    Yes all devs should know UX (IFF what they code is visible to users. if it's middle-tier business rules logic, no need). Learn a few simple principles for what fonts & colors to use (no need to define styles or templates).

    Why "threading"? Async is inherent in Silverlight/Browser, but isn't the need for threading an edge-case perf optimization now? How many ppl use plinq? I say strike "threading" from the 10 essentials in favor of using the Navigation framework.

  13. Brian Hendersonsays:

    Great list of basics things to know as a Silverlight / WPF developer.

    re: 0. Our limitations, and when to call in a designer.

    0. "Understand our limitations, and if exceeded, be willing to consult an UI designer, or UX professional, or other expert as needed."

    note: UX & UI design are related, but not same thing.

    UI developers should have a basic grasp of UI & functional design, but may still miss on delivering the best UX. Knowledge of human factors & domain-specific insight provide the background information critical to understanding the end users environment. Developers need this understanding to create a seamless integration between the application, the end users, and their environment. Getting UX right is the hardest thing for us UI developers, because it requires developers to go beyond the tools and solicit ongoing feedback from users (and other influences).


  14. acsays:
    > I wouldn't trust a web developer who needed a tool to write XAML / Silverlight / WPF

    I have a paid Silverlight job for you, tools.. well there's no tools. You must verbally spell out all the code.

    From my POV, expecting me to write .NET code without IntelliSense is same as writing without a pen.
  15. yhnqazwsxsays:
    personally, i need IntelliSense strictly because without it, I would spend hours fixing my misspelled errors, on top of the time it takes to initially code. Its an available tool, that makes things easyer. Most have had to start off with out tools, or gone without them at one time of another, and well, it sucks, but it can be done, if your willing to put in the extra time.
  16. Canon Support Contact Numbersays:
    I'm really loving the theme/design of your web site. Do you ever run into any internet browser compatibility problems? A small number of my blog readers have complained about my site not operating correctly in Explorer but looks great in Firefox. Do you have any recommendations to help fix this problem?

Comment on this Post

Remember me