In the Box – MVVM Training

Updated 12 Nov 2010


What is In the Box?

In the Box is a high quality, multi-media training that is consumed within Visual Studio 2010.  Content is navigated and delivered using a next generation computer based training (CBT) experience, the Visual Studio 2010 Feature Extension.

In the Box, is a brand name for a series of CBT Feature Extensions I’ll release that are listed in the Visual Studio 2010 Add New Project dialog; see below image.  This release is MVVM Training, the next will be Prism Training.

In the Box features:

  • Visual Studio 2010 Feature Extension
  • Content delivered as text, code, images, diagrams, video, or hyperlinks to the Internet
  • Hierarchical navigation tool window for content navigation
  • Content is viewed inside Visual Studio 2010 tool windows
  • No additional downloads or dependencies; all content is in the box.  (except online videos)
  • Installed and updated from the Visual Studio Gallery
  • Managed (disabled or uninstalled) using Visual Studio Extensions Manager (see bottom of this page)
  • Authored using Microsoft Word and the Instant Feature Builder

What is in this release of In the Box?

Please watch this video as it will answer most of your questions.

This installment of In the Box contains in-depth MVVM Training that includes an eleven assembly example solution with projects targeting developers at different levels of experience

Who is the target audience?

  • If you have never used MVVM before, this training is for you. 
  • If you have been using MVVM for a while and want to learn more, this training is for you. 
  • If you are an expert, you will enjoy the MVVM Technical Description and MVVM Scenarios content.

What are the requirements to install In the Box?

Visual Studio 2010 Professional, Premium, or Ultimate.

Expression Blend 4 WPF SDK – Free download (see below comment on SDK) (Note: this is installed with Blend also)

For those developers using Visual Studio 2010 Express or Visual Studio 2008, you can use the links in the below download section to download a .mht version of the content along with the sample solution source.  The .mht file can be viewed in your browser by double clicking the file in Windows Explorer.

Please note: I have not tested this solution with the Express version.

Windows XP and Windows Server 2003 Users

In order to run Feature Builder on either XP or Server 2003 you must create an environment variable named LocalAppData (set by default on Windows Vista and Windows 7).

How to Add LOCALAPPDATA variable in Windows XP:

  • Right-click on the My Computer icon and choose Properties
  • Click Advanced
  • Click Environment Variables
  • Under User variables section, click New
  • In the Variable name: field, type LOCALAPPDATA
  • In the Variable value: field, type %USERPROFILE%\Local Settings\Application Data

How do I install In the Box?

Click on this Visual Studio Gallery Link and install from there.

After I install it, how do I get started?

Open Visual Studio 2010; File, New Project, Visual C#, In the Box, MVVMTraining.



In the Box – MVVM Training Introduction video

You can view the above video using the web browser plug in, or you can download and watch an HD version of the video.  To download the HD version of the video, locate the, “About this video” section (lower right side of web page) and join Vimeo; it’s free and very quick to join.



In the Box – MVVM Training on the Visual Studio Gallery

Visual Studio Express and Visual Studio 2008 Developers download the written content and sample application from my:

SkyDrive click here to download.

Note the link is to a folder; you will want to download both .zip files in the folder.

Expression Blend 4 SDK Requirement

I received a report from a developer having a problem with two references to the Expression Blend 4 SDK in two of the included projects.

I thought for awhile about including just these two DLL’s, but thought that would be a disservice, only providing two DLL’s.  I have opted to add the Expression Blend 4 SDK as a requirement because a high percentage of developers already have the SDK installed by Blend or by downloading it.

Have a great day,

Just a grain of sand on the worlds beaches.

167 Responses to In the Box – MVVM Training

  1. […] This post was mentioned on Twitter by Brian_Henderson, Karl Shifflett, Karl Shifflett, Clint Edmonson, Richard McCutchen and others. Richard McCutchen said: RT @brian_henderson: cool stuff for VS2010 users.. In the Box – MVVM Training published: by @kdawg02: #InTheBox […]

  2. raffaeu says:

    Two words Karl: You ROCK!
    That’s it. I saw it at symposium and it was great, I saw the video on Vimeo right now and IT ROCKS!!
    That’s the way, I believe that’s the way of teaching and learning. I can take the InTheBox on my laptop and have everything I need to learn MVVM, MVP, ASP MVC and so on … Can you imagine?
    I am really excited and happy as I mentor the developers in my team every week and trust me, it’s a pain to stick everything together and with this tool it won’t anymore.
    Great awesome idea!
    Thanks for sharing

  3. In the Box – MVVM Training Kit inside Visual Studio…

    Thank you for submitting this cool story – Trackback from DotNetShoutout…

  4. Hey! This looks really promising for me as a developer starting out on the MVVM path, but it seems you missed some requirements?

    Two references in Acme.Prism project in the Acme Common folder can’t be found on my machine. It’s Microsoft.Expression.Interactions and System.Windows.Interactivity. I’ve had to download the latter one for another project a little while ago but I can’t find the Microsoft.Expression.Interactions one. What am I missing?

    I’m working in Windows Server 2008 machine with VS 2010 Professional.


    • Dirk,

      Bummer. They are Expression Blend References in the Expression Blend SDK.

      I’ll update my code and repost, thank you very much for reporting this.

      Give me two hours and then re-download the VSIX from the Gallery.



    • Dirk,

      I’ve updated the requirements to require the Exprssin 4 Blend SDK. The link and reason is in the blog post now.

      Thank you for reporting this,



      • I downloaded the Blend SDK and have to say that this package is just awesome :) I love the simplicity of your application that demonstrates the different stages of going from code-behind developing to using MVVM, using IoC and all the fancy stuff! This is just the kind of training I was looking for and this way of doing it from within Visual Studio is just so nice.

        Thanks a lot for this! Now to refactor the application I’m working on … :D


      • dawson79 says:

        I had the same problem and it wasn’t solved after installed the Expression Blend SDK. I browsed for the two references but the solution still failed to build with the following error: Error 1 Unknown build error, ‘Cannot resolve dependency to assembly ‘System.Windows, Version=, Culture=neutral, PublicKeyToken=7cec85d7bea7798e’ because it has not been preloaded.
        Probably I missed something very obvious but actually have no clue what that is.

        • dawson,

          Sorry you are having a problem, please try the following.

          1. delete any MVVMTraining solutions you created using the MVVMTraining template.

          2. ensure you have installed the Expression SDK

          3. close all VS sessions

          4. Open VS and create a new solution using the MVVM Training template.

          If you still can’t build, let me know.


        • dauger says:

          The link in the blog leads to the expression sdk for silverlight. I think you need to install the expression blend sdk for WPF instead.

        • dawson,

          Thank you so much. I’ve just corrected the link.



        • dawson79 says:

          The wrong SDK was the problem, thank you Dauger and Karl. (The second link, at the end of the post still refers to the Silverlight version)

          Anyway, I love this stuff! I cannot wait to studying it for hours…Thanks a lot!

  5. raffaeu says:

    Karl do you believe that in the future you will release a version of in the box that will allow us to create our own kit like I do now with GAX and GAT. What it’s cool is that I may be able to create my own solution in my office and force the devs to use it as a Guideline to build an app.
    Is there any chance of doing this or delivering new tutorial through InTheBox?

  6. interlogus says:

    I watched the video and I have to say I really like the idea of sophisticated off-line training right in VS. Looks good! Thanks!

  7. raffaeu says:

    I will have a look for sure.
    Thanks and enjoy your thanks giving!

  8. […] Devs: REALLY cool free MVVM training kit built into Visual Studio. I'm going through it now: rhcnet  Microsoft All-In-One Code Framework is a free, centralized code sample library […]

  9. dauger says:

    Great work! I’ve been doing MVVM for a year or so, but I still found it worth my time to go through this CBT.

    As far as the format goes: I enjoyed the “in the box” experience, and I think it is a good way to receive CBT for Visual Studio / .NET. One thing, however, was that I couldn’t figure out if it’s possible to search the guidance browser. Is this possible? If not, maybe you could communicate this feature request back to the Feature Extension team.

    As far as the content goes: I think what you have is very good, and it will be extremely helpful to people looking for guidance. I have two minor suggestions in this area: 1) IMHO, unless the student has attempted to use a delegate command before, the student will not follow your discussion about relay vs delegate commands (maybe you could have flushed out aside here?). 2) An example of how to do things off the UI thread, such as a cancelable long running task would be extremely useful.

    • Dauger,

      Yes search would be nice I thought about that too. I’ll forward the request on.

      1. good suggestion for vNext

      2. I was going to add this, but felt it was out of scope because it would require a lot of information to provide good guidance. However, I’ll a blog post in the next day or so that you’ll want to see. This will REALLY help people in this space.



  10. stanleyjello says:

    Great work on the “MVVM in the box” -really like the format! -A quick question: how did you group the viewmodel & the codebehind files together ?

    • Thanks for you kind words. I wrote a maco to nest the view model under the view.

      When I release the next training for In the Box, I’ll include item templates and and an add-in that will do this for you.



  11. […] In the Box – MVVM Training […]

  12. alexdresko says:

    For some reason, whenever I click on a link to open a code file such as EventRepository.cs, the file is never opened. Am I missing something?

    • Alex,

      Look at the guidance map on the left.

      Do you see green boxes next to each entry?


      • alexdresko says:

        No. Just the blue ovals. Are you about to slap me for not reading something obvious before diving into this thing? :)

        • Alex,

          Close your MVVMTraining solution.

          Reopen it.

          If you don’t see the green boxes, please click the refresh icon above the text in the guidance map.

          Thank you so much for reporting this. The Feature Extension developers thought they had corrected this.

          Let me know,


        • alexdresko says:

          Closing the solution and re-opening (without restarting VS) it got me the green circles, specifically, in all nodes except for the top level node that contains a gray circle to the left of a blue circle. I have no idea what that means, but I do know that clicking on the EventRepository.cs link does not open the file still. For the record, clicking on a link that opens the browser does work as expected.

          HOWEVER, restarting VS and then re-opening the solution made the link to EventRepository.cs work as expected. I’m all good now, thanks!

          If I actually learn MVVM through this thing, I promise to wear a Hawaiian shirt on Friday in your honor.

        • Awesome. Yes, closing Visual Studio was required, my bad for not clearly stating this.

          Hawaiian shits are required!!! ROTFL.



  13. […] This entry was posted in Silverlight and tagged MVVM, Silverlight. Bookmark the permalink. ← Windows Azure – Links LikeBe the first to like this post. […]

  14. Mike says:

    Thank you for this training. It is the best learning experience I think I’ve ever had. I’ve been building WPF and Silverlight applications for about a year, and your training here pulled together many concepts for me. It’s finally clicking! I just wanted you to know that I really appreciate the effort you put into this. Thanks again!

    • Mike,

      Your kind words are very much appreciated. To read the words, “It’s finally clicking” have made my year. This is exactly why I wrote this training.

      Best to you always,


  15. sbjcat says:

    I also must complement you on this presentation and I look forward to more in the series! Hopefully some of your colleagues will adopt your format as well.

    Thanks so much,

  16. developerdan says:

    This is a valuable learning format. I know you made a great effort in putting it together. Still, the spelling errors show that the release was rushed and not well reviewed/edited. “The MVVM pattern has three components; the view, view model, and vodel.” This is a challenging subject. Although the MVVM concept is clear to me I am struggling with understanding your meaning in many places. For exampe, when you say “Look at this IntelliSense popup. What do you see?” I don’t understand your explanation that follows. When I read this as someone used to writing code behind click events I find confusing advanced topics from the very beginning. I have just finished reading the introduction and will continue because I know this is a valuable subject. Please continue with this format. I’m looking forward to the Prism “In the Box” but I’m worried that it will prove to be too difficult to follow.

    • I would be interested in any spelling errors you found.

      It’s challenging to write for all skill and learning levels in the same document; trying to read those who have never seen the topic as well as those who have been using this for 6-18 months.

      My suggestion for you; go slow, very slow at first. I spent three months, learning MVVM, in the end it will be worth the investment.


      • developerdan says:

        I’ve posted some errata way for you Karl. I meant to put it up here, but it landed in a comment dated Feb 2 (scroll way down).

  17. […] on Karl Shifflet’s blog is a very good training package for MVVM. In the Box MVVM […]

  18. jmsugrue says:


    This is really great! I love the In The Box integration of the training material and code samples. I am eagerly anticipating the Prism training. I can’t thank you enough for going through all of the effort to put this together.

  19. sucklead says:

    Looking good so far.
    One problem I have seen though is that the sample app doesn’t work with UK dates.

    • I updated the app and thought I corrected all the date issues.

      Are you using version 1.1? If so, please tell me what line of code is failing and your sugestion for correcting it.



      • sucklead says:

        Yes version 1.1.
        Using the MVVM WPF demo when clicking the first entry the date 12/25/2009 doesn’t show up in the date picker.

        Also this is the error in the output console when picking a date.

        System.Windows.Data Error: 7 : ConvertBack cannot convert value ’30/04/2010′ (type ‘String’). BindingExpression:Path=ActiveEvent.EventDate; DataItem=’MainWindowViewModel’ (HashCode=16321512); target element is ‘DatePicker’ (Name=”); target property is ‘Text’ (type ‘String’) FormatException:’System.FormatException: String was not recognized as a valid DateTime.
        at System.DateTime.Parse(String s, IFormatProvider provider)
        at System.Convert.ToDateTime(String value, IFormatProvider provider)
        at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
        at System.Windows.Data.BindingExpression.ConvertBackHelper(IValueConverter converter, Object value, Type sourceType, Object parameter, CultureInfo culture)’

        • This is a WPF bug.

          Please add this code to the App Startup method. Josh Smith and I wrote about this here:

          // Ensure the current culture passed into bindings is the OS culture.
          // By default, WPF uses en-US as the culture, regardless of the system settings.
          new FrameworkPropertyMetadata(

          Let me know,



  20. sucklead says:

    Adding that code fixes the problem thanks.
    The only other change I had to make was replacing 0:MM/dd/yyyy with 0:d in the SearchView.

  21. […] you’re also interested then go check it out at: This entry was posted in Uncategorized. Bookmark the permalink. LikeBe the first to […]

  22. n2cheval says:

    Nice work, no great work and love the Feature Builder style of presentation.

    Just a couple of things so far that I’ve found.
    1) “Why lean MVVM” the two file links go no where or don’t open the files up.
    2) “Thinking in MVVM” section – The Intellisense popup image doesn’t match the text below it.

    Other than those cosmetic touches it is great.

    One other thing, I haven’t gotten too far as of yet but I see that you’re not promoting “blendability” or job based data sources. If it’s “blendable”, you can’t have a composer linking the View and ViewModel. Job bases data sources
    1) Design time data – that’s not the Blend stuff but detect the design mode and links the data to the repositry context.
    2) Developer/Test time data – When you just want to go straight to the view and see what it is doing without hitting the database or service or being able to test the view model and repositry.
    3) Run time data – Prodution data contexts.

    • Thanks for writing.

      1 – we have seen this before. There is a Refresh icon in the guidance workflow explorer. Click this. All the items in the displayed list will get green boxes next to them. All the links will start working. The Feature Builder team is trying to fix this.

      2. The text is about what I see when I look at the image; after I start thinking in MVVM.

      Toolability, design-time data is not an MVVM specific topic, you need this even if your not using MVVM which is why I didn’t cover it. Although, all of the example code and applications are toolable. I also provide links to which is all about toolability.



  23. […] 僕はこれ以上良いMVVMサンプルと概要の説明を見た事がありません。平易な英語で記述されているので、是非こちらも追ってみてください。MVVMについての理解を短時間で深められるこれ以上の資料は無いでしょう。 In the Box – MVVM Training Karl on WPF […]

  24. toddmain says:

    Fantastic, love this concept of delivering training like this in VS. How about a VB.NET version of this? And then a Windows Phone 7 training?

    • I don’t have the bandwidth to deliver in c# and This release took up many weekends as it was.

      As a former VB.NET programmer, I know where the request is coming from.

      I’ve been encouraging others to write this type of training for other topics like WP7, let’s see where this heads.

      Thanks for encouragement,



  25. Awesome, I have been trying to get my head around MVVM, MEF and just went through all the Prism tutorials. Are you going to have “in-the-box” training for Prism? I know, you are thinking “you want what?” Just asking. I will tackle the MVVM stuff first.

    • Yes, Prism is next.

      Strongly recommend getting MVVM under your belt, then move to Prism.



      • Hey Karl,

        This is really, really great stuff. I went through your “In the Box” MVVM training and am going through my Prism tutorials again as the light bulbs are starting to go on – finally! This is the kind of stuff Microsoft should be doing when they release products! Your techniques for teaching this style are excellent and as an Adjunct member of faculty for a local college, this stuff and style rocks. I cannot wait for your Prism tutorial.

        Also, love your sample on Integrated Navigation with Prism 4 (The Phone Company). I am curious, will this work with multiple modules? For example, the Inventory has Item and Category. Let’s say, you have another module, let’s just say Customers. You have edits open for items, switch to the customers and edit a customer and customer type? I just downloaded your example and haven’t had time to get my head around it yet, but it is awesome and fits the bill as the the way things work in a real company. Anyway, great job you are doing in all this stuff to help us developers as it seems technology is evolving faster than I can absorb it!

        Again, thanks so much for your hard work and helping us develpers get our head around all this cool stuff!


  26. […] un’estensione per Visual Studio 2010, che si chiama In the Box – MVVM Training, di Karl Shifflett (vi consiglio di seguirne il blog, ci arrivate cliccando sul link con il suo […]

  27. yazidarezki says:

    Excellent stuff,

    All the ViewModels do not have an interface why?

    in the ListBoxItemExecuteCommandViewModel you have a dependncy with DataGenerator as shown below:

    public ListBoxItemExecuteCommandViewModel()
    var data = new DataGenerator();
    data.SeedSequentialInteger(1000, 1);
    var list = new List();
    for (Int32 i = 0; i < 10; i++)
    list.Add(new Person { Id = data.GetSequentialInteger(), FirstName = data.GetFirstName(), LastName = data.GetLastName() });
    this.People = new ObservableCollection(list);

    Should something like

    public ListBoxItemExecuteCommandViewModel(IDataService dataService)


    and thus we could mock the dataservice

    Similarly, in DialogInteractionRequestViewModel you have a dependency on InteractionRequest

    public DialogInteractionRequestViewModel()

    _notificationFromViewModelInteractionRequest = new InteractionRequest();
    _confirmationFromViewModelInteractionRequest = new InteractionRequest();

    Should be something like

    public DialogInteractionRequestViewModel(IInteractionRequest notification, IInteractionRequest confirmation)



    • Yaz,

      I don’t create interfaces for my ViewModels. If your design or personal choice desires them, by all means create them. I’ve never needed them, so I don’t create them. Also, I don’t want someone just coming to MVVM and see class explosion without understanding why. This added complexity can turn people away. However, if there is a good reason for them, then use them.

      The demo code in the scenarios is just that. Demo code to show using a button in a listbox.

      Same thing for the dialog scenarios, demo code to show a very specific item. Adding in extra code does not enhance the demo, it only adds noise to it.

      When writing training material, blog posts, etc, you are reaching thousands of developers with a wide range of skill and experience. When I write my applications, they are all fully testable and use standard patterns like you did in your comments. When trying to demonstrate a single concept, I like to remove as much noise from the demo code, so that they can just look at the code and get the concept.



  28. yazidarezki says:


    Excellent reply I knew that you would say something along those line and at least now you answers would benefit new comers to MVVM.

    It would be nice if you covered something the follwoing:

    – threading
    – UI Automation (testing the GUI)
    – MEF


    • Yaz,

      Yes, I could have covered many scenarios. The goal was to just explain the MVVM pattern. In-fact, I had to check myself all the time and not allow the scope to creep, otherwise, I would have never shipped.

      BTW: I did this on my weekends and for free.

      I think I accomplished the goal of explaining MVVM to a developer that had not seen MVVM before.

      Thanks for the feedback,



  29. yazidarezki says:


    I thought this was just the beginning.


  30. […] La ressource MVVM In the Box dont on a parlait pendant les questions/réponses se trouvent ici. […]

  31. rvaldivieso says:

    Hi Karl, wonderful training. I just have one question. After installation, I got the following message when I open my visual studio.

    Feature Builder Runtime
    The environment variable LocaAppData must be manually configured for windows XP and Windows Server 2003. Please visit for more information.

    What value should I use in this environment variable named LocalAppData?



  32. autosoma says:

    Thank You Karl,
    I found In-The-Box today. Its an absolute brilliant resource for any team working on an MVVM pattern.
    Its Stellar
    Thank you again

  33. Hi Karl,
    This resource is superb. I’m a junior programmer, teaching myself the MVVM pattern because I have not yet been lucky enough to get on a SL or WPF project at work.

    I think, for me, there was one gap that stopped me in my tracks. Messenging is not dealt with in a simple way. It goes from the DI concept, straight to using Prism in the scenarios project. (Like going from crawling to running, skipping walking along the way).

    It would have been of value to me if there was an example using the messaging infrastructure in something like MVVM Light. I’m trying to find a good messaging example, so that is the only thing that was missing in your excellent offering.

    I meant this as constructive feedback, as I am a huge fan of this In-The-Box training kit. You really have done a brilliant job, and I am most grateful, as I am now a long way along in understanding the MVVM pattern. All thanks to you. (Maybe one day, a client might actually get daring enough to go with WPF as a technology. It would be nice to work on one.)

  34. Thank you for the feedback, very much appreciated.

    For a detailed write up on messenging check out this Prism 4 chapter

    While your’re there, check out the other chapters too. This is good information.

    The next In the Box Prism Training, will cover messeging in detail. I didn’t want this training to stray too far from MVVM. It was there to let developers know about this scenario and one approach to it.



  35. Thanks Karl! You totally rock!

  36. weikminded says:

    Thanks Karl!

    I am grateful to all the bloggers who have put up articles, tutorials, videos, etc. on MVVM. They have put me well on my way to understanding a appreciating this pattern, but you, my friend, have raised the bar.

    Text book authors take note: This is the way to deliver instructional content.

    Imagine if the Guidance Browser was the Guidance Editor allowing one to highlight, add notes and make bookmarks. Do Feature Extensions work in the Express versions of VS? How does the overhead of creating this guidance content compare to, say, writing a programmer’s manual for one’s codebase?

    • Thank you for feedback.

      Express versions are not supported.

      The only overhead is adding hyperlinks and a little work producing it.

      Context took me 95% of the time.



  37. […] “In the Box” training Karl Shifflett has made a training package to teach MVVM that works inside Visual Studio. One of my winter projects will be to go through this training […]

  38. mdlohan says:

    Great concept – well executed
    appreciate the effort you put into producing it !

  39. craigboucher says:

    Really great idea. MSDN should put out all their tutorial content this way–especially if you could easily translate InTheBox to Html.

    • craigboucher says:

      Next up, I think you should do an InTheBox meta training: how to author InTheBox training modules. :-D

  40. jsm85 says:

    Thanks karl,

    The MVVM – In the box training is a brilliant idea!! We have started using the MVVM pattern at work and your tutorial has made me understand why we should use it. It was like a light bulb switching on and it all made sense.

    The only thing I’d like to suggest would be to make it a little more interactive for the student. i.e. set challenges or create exercises within the tutorials to allow the student to think for himself and write some code related to the chapter.

    Also, any info on how one would go about creating their own training material, this would be a perfect idea for maintenance on existing projects at work.

    Thanks again


  41. […] For anybody interested learning or understanding how the M-V-VM pattern works please checkout Karl Shifflet’s in-the-box training here. […]

  42. […] | Django documentation 13.1. csv — CSV File Reading and Writing — Python v2.7.1 documentation In the Box – MVVM Training « Karl On WPF – .Net 20 Interesting WPF Projects on CodePlex (Some for Silverlight too) – Pete Brown’s […]

  43. mcdoma2000 says:

    In MVVM Introduction | Thinking in MVVM, the text says “Look at this IntelliSense popup. What do you see? What I see is:
    {} CSharp, {} Internal, {} Runtime, {} SqlServer, {} VisualBasic, {} Win32. Then the text says, “When I look at the IntelliSense popup I see: and you list three things:
    A view with an ItemsControl that data binds to an ObservableCollection on the view model.
    A view model that exposes data in an ObservableCollection.
    A view model that exposes ICommand properties to handle item selection.
    Yet none of these things are visible in the image. Can you help me understand how you see those three things in that image?

  44. mcdoma2000,

    What I was trying to convey was when looking at UI or a mock of a UI, that I look at it from an MVVM perspective. While the three items you listed are not visible, I look past what I can “see visually” and instead look at the item and see how it can be constructed using MVVM. When you have used MVVM in several projects, you’ll start to see the objects according to the pattern.

    Does this help?



    • brianhartung says:

      Hi Karl…I was confused by this analogy as well. I understand the “what I was trying to say” as a standalone concept, but you have a red arrow in the diagram specifically pointing to the namespace members under Microsoft and are asking the question what do we see. I’m having a hard time connecting the dots between that specific member list and the larger concepts…it sounds like perhaps we’re focused in too hard on the literal list of members and perhaps trying to draw a connection between the orthogonal concepts of CSharp, SqlServer and Win32 and thinking in terms of view models (again, no confusion on the overall notion of beginning to decompose problems and think in terms of separation between view and viewmodel…perhaps I just need an IValueConverter between the diagram and the point to coerce my understanding :)

      Thanks again for alll your hard work in putting this together…it’s fantastic.

  45. houmie says:

    Hi Karl,

    Pretty impressive. I am already quite good in MVVM, what I am looking for is PRISM training. You have mentioned PRISM in your video but showed only some of the features, are these the PRISM 2.2 features or already the PRISM 4.0 features? It seemed to be a bit thin to be the latter. But it might still be a good covering of the foundation.


  46. weikminded says:


    At first I thought that grouping the viewmodel under the view (in the Solution Explorer) was a pretty cool idea, but now I’m not so sure. I imagine this boils down to a personal preference and as such it’s silly to debate it, but I’d like to offer this comment:

    Don’t you think this grouping implies a coupling that isn’t there? For example if I delete the view.xaml file in your hierarchy, the viewmodel.cs will go too. (Unless I move it first). This seems anathema to the idea that the view and viewmodel are unaware of each other. Furthermore, I found that to get the viewmodel.cs file to look like a code-behind file in Solution Explorer I had to add the ‘DependsUpon’ tag to the project file thus explicitly saying the viewmodel depends upon the view which of course isn’t true.

    Keep up the great work Karl. I find it so valuable that I’m willing to give up my Sunday morning bicycle ride for it.

  47. aureliensourdon says:

    Hi Karl,
    I like your MVVM training, it’s very powerfull.
    I ‘m trying to use instant feature builder for my job. But I’m very impressive by lots of feature that you have used.
    I ask you if it’s possible or not to provide the source code of MVVM Training extension to improve my own.
    Thanks for your response.

  48. Hi Karl,

    It was really, really awesome. The training you have provided “IN THE BOX” is really a cool way to learn the things, that too when you are not connected to the internet.

    I really loved your idea about giving training “IN THE BOX” and the training content is also very nice, properly formatted, related to subject and I can’t describe, there are so many things into that.

    Thank you very much Karl for your hard work for us.

    Thanks & Regards,
    Naimish Pandya
    [MCTS, MCPD]

  49. Hi, I would also like to ask a question here which I have asked on MSDN also but still looking for the answer.

    Is WPF’s MVVM Pattern only for C Sharp Developers??

    I have installed MVVM Pattern’s Visual Studio Template from Codeplex

    but I can’t find the template in VB.NET lang. but I can see that in C#.NET lang.’s templates.

    What’s wrong?

    Plus in that I can’t find the same in Visual Studio 2010…… :(

    • That CodePlex MVVM template is not very good. Uninstall it.

      What are you looking for?

      In the Box lists some frameworks that you can use.

      I recommand, learning MVVM, manually creating your projects and viewmodels until you have the pattern down good. Then just create you own VB templates implementing the features and code patterns you like.



  50. Hi Karl,

    Thank you very much for your reply.

    As of now I am just going through and started to learn MVVM through “IN THE BOX” but I still don’t know and curious to know If I can use MVVM in VB.NET also??

    Thanks & Regards,
    Naimish Pandya
    [MCTS, MCPD]

  51. bennsolo says:

    Dear Karl,

    I could find time to go through till MVVM IOC and the start of scenarios; still I felt I should not wait till I complete the entire training to pass a few words of appreciation for your sincere and hardworking effort.

    It is absolutely superb, amazing, marvelous, and wonderful.
    Really awesome for any level developer to do an excellent start.
    Your presentation of the Proof of concepts is Very Simple and Solid.

    It really clarified many of my doubts in MVVM and also changed my perception on Unity Container and Enterprise Library.
    This will really help a lot of aspiring MS professionals to learn patterns and practices.

    Guidance explorer is really cool and if we can have zoom feature like Internet Explorer it would help a lot.
    Also I want to take a hardcopy of the document, I did not know how, is there a print feature of all of the text content in a single hardcopy or pdf document.

    I have a question on MVVM

    1) Can we use View Model Pattern for control development or is tightly coupled code behind better for control development?

    Expecting your other “In the box” training, especially the PRISM one soon.

    Thanks & Best Regards,

    • Benn,

      Thank you for you kind words.

      Check the blog post download links. There is a link to an HTML version of the text you can download and print. It’s on my skydrive.

      Yes, you can use the MVVM pattern for any type of UI development. I’ve used it for control development in two projects, love it.



  52. compoundsys says:

    Hi Karl I’ve been playing around with your MVVM In the box. I’ve really been struggling getting my head around MVVM and this has really made sense. I really found the format really suited something which is quite architectural and requires quite a paradigm shift from It makes it really easy to jump around the project and see how all the bits fit together. Cheers. Perhaps MVVM unit testing next? :)

    • Thank you for your kind words.

      Currently I’m working on an In the Box for Prism.

      These are a lot of work to produce and with so much being and has been written about unit testing, not sure this would be the best use of time or that it would get the milage that MVVM has and Prism will.

      However, like all suggestions, I’ll add it to the list. Thank you for the feedback.



  53. stroumfios says:

    This tutorial helps me so much to understand the mvvm pattern. Great job.
    Although, I am facing an issue while I am trying to open a new window.

    Based on tutorial Acme.MVVM, I created a new Window and it has the same content as the EventEditView.xaml.
    When a user clicks on new button the new window opened and when the save button is clicked the SaveExecute command executed. Great up to here.
    The Problem
    In SaveExecute method the ActiveEvent is null, although it has been instantiated in NewExecute method.
    Am I missing something?

  54. stroumfios says:

    I have one more question, if you could to answer please.
    Well, I am trying to create a simple application for a ToDo List.
    The mainWindow(it has the MainWindowViewModel) will have a ListView with all the available items and a button which onClick is opening a new window named AddItems(it has the AddItemsViewModel).
    I am trying to display the new item in the mainWindow when the save button from the AddItems is clicked.
    Is something that is presented in “in the box” and I missed it?


  55. As always, nothing but praise for your In-The-Box tutorials. This is what Microsoft should be doing when they come out with all these technologies. I have been struggeling with finding a complete Enterprise application that utilizes all these concepts. Yea, I know, the crawl, walk, run, priciple applies and I am anxiously awaiting your Prism In-The-Box training. I have found a couple of examples that are great IssueVision by Weidong Shen on CodePlex and HappyNet on CodePlex. These 2 examples are things Microsoft should have put out when they released the .NET 4.0 Framework with MEF and all the other goodies. The HappyNet example is about 1/500th of the size of the Enterprise application I am in the works of developing but it is a great architectual example. Unfortuntately, the documentation is in French.

    Just an FYI to put a bug in your ear as you may have some clout to inform the folks at Microsoft that when they come out with all this great stuff, they need to do a better job of teaching it to the developers. One problem is that I am the sole developer at my organization so I don’t have a team to bounc ideas off of and I basically “beat my head against the wall” to figure stuff out. Anyway, take care and I am really looking forward to your In-The-Box Prism course.

    Take care and Thank You,

    • CyclingFoodmanPA,

      Before joing Microsoft 2 1/2 years ago, I was in the same exact position you are in. User groups and code camps (attending and speaking at them) helped me fill some gaps.

      If your looking for guidance on building large scale applications, look at Prism. Great documentation and a solid library.

      I’ll be doing several code camps were I’ll be teaching Prism and also looking to do two, two day events on Prism.



  56. developerdan says:

    I’ve only reviewed your MVVM Introduction section. Here is some errata you may want to look at:

    Wiring View and View Model:
    …This process can be driving (s/b driven) by either configuration or convention.

    Thinking in MVVM
    …Let me illustrate. Look at this IntelliSense popup. What do you see?
    (Instead of What do you see? why not say “How do you think it was coded?” Or something like that)

    MVVM Technical Description
    …rename controls to suite (s/b suit) their requirements
    …the view model takes its dependencies in the form (s/b form of) interfaces
    …Responsible is (remove is) for business logic and data
    …moving UI logic from a view (s/b view’s) code-behind
    …that UI logic can test (s/b be) tested in isolation
    …The view controls can then data binding (s/b bind) to the ICommand
    …d:DesignInstance markup extension or (remove or) can be emitted
    …Known Issues (why do the following qualify as Known Issues?)
    There are numerous XAML applications around the world that use the MVVM pattern. This pattern is heavily promoted by the XAML platform community, Microsoft MVP’s and respected technology leaders.
    Expression Blend and the Visual Studio 2010 Designer both use the MVVM pattern.

    • Thanks for the feedback.

      Known Issues is a standard header from the book. Have a look at the book and you’ll understand that “Known Issues” is not really what is sounds like.



  57. aroshaj says:

    Hi Karl,
    Just discovered your In The Box training. It’s great. I love it. Thank you very much. I can’t wait to see what else there is in the future.

    Really appreciate this. This rocks.

  58. Heinrich says:

    Karl, des mit dem MVVM-Training hesch so öbbis vo geil gmacht!!!
    Muchas gracias por todo el esfuerzo!
    Merci nonemohl, des bringt uns ächt widder!
    Gruess vom Heiner

  59. Hi Karl,

    Great effort on this, I liked the In the Box experience a lot, and the general pace of the training was excellent too. I came into this having used XAML to develop some small test applications without really thinking too much about the design side.

    Just in terms of the content, the way you evolved the architecture of your application was really a great as it actually got me right into the thinking behind the design choices.

    In terms of critique, I can’t really come up with a lot, the only thing I would say is that it could go further than it does, mostly because the example focuses on 1 view model. When writing my own “play” app after doing this I was using more ViewModels and quickly started facing more design choices that I didn’t have your expert guidance on, such as:
    – Handling interaction between view-models, for instance Parent/Child View models e.g. what if there was a need to abstract your EventEdit view model to a separate class so that a generic implementation of multiple types of events could be plugged in (e.g. Online Event, Onsite Event). In this scenario your “Active” Event View Model might expose different sets of commands, but you want these commands to appear on a Menu Bar exposed in the MainWindow view etc. while information is “out there” on doing this, most of it sucks from a design point of view.
    – Generally extending this guide to explore Prism more completely would be useful as the Prism documentation is not that accessible and doesn’t really go much into the design choices that drive adoption of the framework.

    All this said, its great stuff.

    • Sam,

      Outstanding feedback. I’ll take this to heart with my Prism In the Box training.

      I’ve not used Menu Bars or Ribbons in my LOB applications, but I know many developers use them. I’ll add this common scenario to my list of challenges for the Prism training.

      We are planning a two day Prism event at the end of April here in Redmond. Announcement coming soon on my blog. Hope you can make it.



  60. Paul Juhlin says:

    I do like this way to do a course and I do looking forward to this. But I do have problems with my Internetbrowser. I use Firefox, but the links start IE and because I do not have IE as default browser it starts a new instans for evrey new page I like to see. Not good.

    • Karl says:


      This is because IE is used inside Visual Studio and the navigation is initiated inside IE.

      I’ll look into solutions.

      Thank you for reporting this to me.


  61. digipug says:

    Hi Karl,

    I just wanted to send you a quick note to express a boat-load (and we’re talking cruise-ship size) of thanks for creating this fantastic resource. I’m a relatively new developer drinking from the firehose at a new job, and the In The Box MVVM training has been a tremendous help as I try to figure out all the new technologies I need to get my head wrapped around as quickly as possible!

    Thank you, thank you, thank you, and if You do still plan to produce an update including Prism training, I will be even more indebted to you! =)

    With sincere gratitude,


    • Karl says:


      Thank you very much for your kind words. Yes, Prism training is on the schedule. I was sick in Jan-Feb so I’m behind schedule.

      Best to you,


  62. mrt181 says:

    Hi KArl,

    I does not install on a german Windows XP SP3. It fails because of an System.IO.PathTooLongException.

    (C:\Dokumente und Einstellungen\UserName\Lokale Einstellungen\Anwendungsdaten\Microsoft\VisualStudio\10.0\Extensions\Karl Shifflett\MVVM Training\1.2\P\In the Box\ Acme.Prism/interactionrequest/confirmationlocalmodalinteractiondialog.xaml.cs

    Any idea to circumvent this problem?

    This is the log:

    22.03.2011 15:15:02 – Er wird nach passenden Produkten gesucht…
    22.03.2011 15:15:02 – Installiertes Produkt gefunden – Microsoft Visual Studio 2010 Professional
    22.03.2011 15:15:02 – Die Erweiterung mit der ID InTheBox.MVVMTraining wird nicht für Microsoft Visual Studio 2010 Professional installiert.
    22.03.2011 15:15:04 – Folgende Zielprodukte wurden ausgewählt…
    22.03.2011 15:15:04 – Microsoft Visual Studio 2010 Professional
    22.03.2011 15:15:04 –
    22.03.2011 15:15:04 – Die Installation der Erweiterung für Microsoft Visual Studio 2010 Professional wurde gestartet…
    22.03.2011 15:15:05 – Installationsfehler: System.IO.PathTooLongException: C:\Dokumente und Einstellungen\UserName\Lokale Einstellungen\Anwendungsdaten\Microsoft\VisualStudio\10.0\Extensions\Karl Shifflett\MVVM Training\1.2\P\In the Box\ Acme.Prism/interactionrequest/confirmationlocalmodalinteractiondialog.xaml.cs
    at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.BeginInstall(IInstallableExtension installableExtension, Boolean perMachine, AsyncOperation asyncOp)
    at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.InstallWorker(IInstallableExtension extension, Boolean perMachine, AsyncOperation asyncOp)

    • Karl says:

      It appears you are three characters too long.

      Can you create an account with a shorter user name than, “Lokale Einstellungen”

      Sorry you are having this problem. I did all my testing on Windows 7 which has shorter path names.


      • mrt181 says:

        Hi Karl, thats too bad.

        I can’t change my username (A12345), because i am at my office computer on the corporate network

        XP GER — C:\Dokumente und Einstellungen\A12345\Lokale Einstellungen\Anwendungsdaten\Microsoft…
        XP USA — C:\Documents and Settings\A12345\Local Settings\Application Data\Microsoft\…

      • I am having a similiar issue. Error says:
        The extension could not be installed because the following error occurred:
        C:\Documents and Settings\hector.cervantes\Local Settings\Application Data\Microsoft\VisualStudio\10.0\Extensions\Karl Shifflett\MVVM Training\1.2\P\In the Box\
        You have found a fix for this? I’m in the same boat, can’t change my user id.

        • Karl says:

          Very sorry you have been caught by the logn file name issue. The above XP path is 177 charachters long, leaving only 70 characters for the contents of

          do you have access to a computer with Windows Vista or Windows 7. If so, you won’t have this issue.

          I have not had to to reorganize the above code. I will be doing it in July as part of another In the Box I’ll be publishing.



  63. Karl says:

    What is, “Lokale Einstellungen\Anwendungsdaten”


  64. mrt181 says:

    It’s “Local Settings\Application Data”
    as in “C:\Documents and Settings\\Local Settings\Application Data”.

    • Karl says:

      We are looking into ways to make this work. I hope to do a refresh of the In the Box MVVM Training in a month or so. There are some UI features I want to add and make a few corrections. I will try and make the file names shorter so that this won’t be a problem for XP users.


      • mrt181 says:

        Do you have any idea how to rsolve the problem in the meantime – a hack or something else?

        • Karl says:

          Short of installing on Windows 7 no. The longer German words pushed the file lenght limit over the maximum allowed. I’ll need to shorten the file names in order for you to install it.


  65. […] Karl Shifflett hat dazu ein sehr gutes Paket an Tutorials geschrieben, das sogenannte “MVVM in the Box“. Dieses integriert sich in das Visual Studio und bringt ein eiges Projektpaket mit, in dem […]

  66. sethspearman says:

    I am about to post a blog on what I learned (and what I want to remember) from going through the In the Box MVVM training. But before doing that I wanted to just say the the content and format are just incredible. I think the potential for the In the Box training format is huge. It was one of the best learning experiences of my life.

    And kudos to you for the fantastic content. (Even a great format would be a giant fail without good writing and content.) There is absolutely no presumption in the way you wrote this. Lots of detail and background and when you didn’t explain you hyperlinked to other resources. I cannot say enough about it.

    I am a completely self-taught programmer and I also think I am pretty slow to pick things up (although I have a sneaking suspicion that my self-doubt is rooted in the fact that I listen and read a lot of brilliant people and I need to cut myself some slack.) All that to say that this has gotten me a good ways down the road in just a 3 hour sitting. I am still trying to wrap my mind around some of the pre-reqs and will undoubtedly take this tutorial many times in the future.

    Thank your for your passion for teaching (which is extremely evident by the quality and care you have put into this) and your willingness to do mindshare with us regular folks.

    Kindest Regards,

    Seth B Spearman

    • Karl says:


      I’m humbled by your remarks and appreciate them so very much.

      I’m so very glad that you were able to understand the material and get the very most from it.

      Best to you,


      • Seth Spearman says:


        In case you are interested, here is the blog I wrote about it. I am a little reticent to show it to you because i wrote this for me and not anyone else.

        For me this is all about HOW not WHY or architecture. Architecture is something I struggle with and another thing I love about your tutorial is that it does not seem to have shortcut-ed the architecture (with the repository pattern for example) even though it is a tutorial. So not only have you written a great tutorial but a reference implementation. Would you say that is true?

        Again, kindest regards,


  67. […] I spent a couple of hours going through Karl Shifflet’s In the Box Training for WPF / MVVM.  There is a lot of great things I could say about In the Box format for developer training […]

  68. karelvdh says:

    Hi Karel,

    This is an impressive piece of art.
    What we need and more.
    Thanks for the very good work!

    Kind regards,


  69. g2-e5660b1d210c0b122cf24b6780fc2665 says:

    I just wanted to tell you about a bug I found in “In The Box”. When I try to create a new project and add it to an exsiting solution I get an error that “Value cannot be null. Paramter name: path2”.

    • Karl says:

      Thanks for reporting this.

      The template was not intended to be used like this because it has to do a lot of post template unfolding tasks.

      Better to create the solution normally, then add other projects to that solution.



  70. […] is now open for the  patterns & practices Prism, Unity, WPF, MVVM training event, 27-29 June in Boise, ID. All event information can be found on the registration […]

  71. clayshannon says:

    This is awesome, Karl – is there still going to be a Prism “In the Box” Training project/materials?

  72. wesleyra says:


    This is invaluable stuff!!! I am a self learner and for the last six months I’ve been migrating from vb6 to C#. The More I learn about MVVM and Prism, I admit I’m just screeching the surface, your work shows a programming dimension I have never seen.
    So far I’ve been able to grasp a lot however I seem to run into a road block. In your PublisherView.xaml file, I find PublisherViewModel class that I am clueless how to create.

    Can you please help?


    • Karl says:


      PublisherViewModel is being injected by the Unity IOC container, using the Dependency attribute on the PublisherView.cs PublisherViewModel property.

      Thank you for your kind remarks,



  73. ericouellet2 says:

    Hello Karl,

    I should tell you congratulation. It is excellent.
    But I’m a perfectionnist. There is one thing that is missing to my vision. A step. The step between Basic solution and MVVM.
    This missing step is the one where I started from and realised quickly that I’m missing something like MVVM.
    The step is the one where you use binding but you try to bind directly to object. When something is missing, you try to bind to your own form doing very ugly tricks. You eventually realise why MVVM exists and what are a big portion of its benefits.

    Thanks. Your course is very well made, structured and so easy to follow.

  74. ericouellet2 says:

    Hello Karl,

    If I’m right, you work for Microsoft in the Patterns and Practices group. The you could probably light my lantern…
    I’m still reading your very nice “In the box” training but have an interrogation:

    – In the “View-View Model Interactions” slice, you show us “Event” and “Expense” classes that derive from ObservableObject. If I open the object browser and look at Microsoft.Practices.Prism.ObservableObject, then I realise that is a complex calss derived from DependencyObject that should usually be used in the UI. After I click on the link you included, I realised that it is not the same object. The link point to a simple INotifyPropertyChanged object implementer. Why using the same name ? I understand that the name is very meaningfull but it seems to me to bring a little confusion. Your object naming seems very fine to me and in concordance with ObservableCollection. But why prism use ObservableObject instead of DependencyObject. What I’m missing ?


    • Karl says:


      Good question. Both Josh Smith and I have used ObservableObject for many years in our applications even before Prism.

      This same thing happened to me when Microsoft released their validation API’s. Mine had been out for years, then the .NET framework adds classes and namespaces that matched my Ocean fraemworks. I ended up renaming my namespaces to avoid confusion, but didn’t see a reason to rename my ObservableObject. I’ll be sure to add a note about this in a future release.

      I will look into why Prism derives from DependencyObject also.



  75. Karl says:


    Prism uses the NotificationObject like I use the ObservableObject. Both are simple POCO classes.

    The Prism observable object’s purpose is to overcome a Silverlight limitation.

    This is in the remarks section of the ObservableObject class:

    “This class is required, because in Silverlight, it’s not possible to receive Change notifications for Dependency properties that you do not own.”



  76. ericouellet2 says:

    Hello Karl,

    Sorry to pass by this channel of communication but I can’t find another better one…

    I took a look at UpdateControls from Michael Perry :

    He seems to have a very nice way of defining dependency between objects. His article on code magazine convince me. But I do not have your experience. You seems to be at the heart of Microsoft MVVM, then I decide to try to get some hints from you… if you agree to answer my few questions ;-) ? …
    Are you aware about this project ?
    Does Microsoft plan to switch on Micael Perry library ? If not, why ?
    Do you know who, at Microsoft, is in charge of deciding to go with or without it ?
    Should I stay with INotifyPropertyChanged ?


  77. Imageek says:

    I really enjoyed the MVVM training. Any news on the Prism In The Box?


    • Karl says:

      Yes, I’m working on two additional In the Box’s.

      I was asked to write an In the Box for Windows Phone 7 and MVVM. This will ship in July. I’ll then start on the Prism In the Box in Augest.



  78. Hi Karl,

    There is some frustration among Silverlight developers and I though I would ask you what is going on at MS. It appears MS has thrown SL “under the bus” in favor of HTML5 and all things ASP.NET MVC. In a preview of Windows 8, nothing was mentioned about SL and we are all wondering WTF? I downloaded your Silk Drop 11 and got it working and will be digging into it but there are a number of us developers that are pretty confused and concerned. We have spent LOTS of time learning SL and believe it to be far superior to ASP.NET. Let’s face it, you only need XAML and C# or VB.NET to develop a SL application, but to create a web applicatin with all the bells and whistles, you need a plethora of s$%t. You need JQuery, JSON, JavaScript, and a number of other things to get something to work.

    I equate this to the VHS/Beta Max back in the 80’s. Beta was better, but VHS won out. Please let us know what is going on with SL at Microsoft as us developers need to know where to concentrate our efforts and do not want to waste time learning something that is going to be done away with.

    Anyway, I am asking you this question because I follow your articles and have a LOT of respect for your skills and really appreciate that you are a veteran. I am former Army and have the utmost respect for all services as they all play an important part in our freedom to do what we do today.

    Thanks for all your work and all you do to help us developers.

    Keith S. Safford – Cycling to fight cancer, one mile at a time! Cycling to support our troops, one mile at a time!

    • Karl says:


      My work on Project Silk is not connected to any recent announcements from Microsoft. As you know I work on the patterns & practices team. Up to this point, p & p had not yet delivered guidance on MSDN for ASP.NET developers wanting to leverge the newest web standards and modern browsers. After shipping Prism last year, I was asked if I would like to participate in this project. Having 8 years of production web experience I accepted the challenge.

      As far as developing for Windows 8, this information will be covered at BUILD this September.

      I know I did not provide a reply that directly answers the question today, but in September BUILD should.



  79. […] Dennes  Treinamento de MVVM in-the-box : giovannibassi  Inscrições pro #TechEdBR abertas: Com […]

  80. Marek Czech says:

    Dear Karl, Thank you for your time and passion. You’re creating really helpful stuff. I’m waiting for your Prism in the box! All the best for you…


Get every new post delivered to your Inbox.

Join 255 other followers