MVVM Light Toolkit

MVVM Light is going to Xamarin Evolve!

With less conferences this year, I have been able to push some very important changes to MVVM Light, most importantly full Xamarin support. In the next few days I will be busy polishing this very important release, and you can expect very exciting demos at Evolve! So if you are attending, please join me on Wednesday, the 8th of October, at 16:00.

The topic of my session is Building Cross-Platform Applications with Xamarin, Xamarin Forms and MVVM Light.

In this session, you will get an explanation of why the Model-View-ViewModel pattern is a good approach to building cross-platform applications, and how the MVVM Light Toolkit can help you to write better code faster. We will see the latest additions to the new MVVM Light, made especially for the Xamarin ecosystem. And we will also see an exciting demo showing how to share code in Windows Phone, Xamarin Android, Xamarin iOS and Xamarin Forms! We will talk about databinding and commanding (yes, in Xamarin too!), navigation and dialogs, and XAML on Android and iOS too!

More information...

NEWS



A Pluralsight course titled MVVM Light Toolkit Fundamentals is available! This is the best place to start and learn all about the toolkit.

The course will give you a full overview about each component of the MVVM Light Toolkit. In addition it will show a lot of samples for each of the components. The full course features 6 modules for a total of 4 hours and 30 minutes.

  • Module 1: Introduction to MVVM
  • Module 2: Refactoring the app to MVVM
  • Module 3: The Core Components
  • Module 4: The Extras
  • Module 5: Installing the MVVM Light and Additional Components
  • Module 6: Advanced Examples With MVVM Light

Introduction

The main purpose of the toolkit is to accelerate the creation and development of MVVM applications in WPF, Silverlight, Windows Store (RT) and for Windows Phone.

The MVVM Light Toolkit helps you to separate your View from your Model which creates applications that are cleaner and easier to maintain and extend. It also creates testable applications and allows you to have a much thinner user interface layer (which is more difficult to test automatically).

This toolkit puts a special emphasis on the "blendability" of the created application (i.e. the ability to open and edit the user interface into Blend), including the creation of design-time data to enable the Blend users to "see something" when they work with data controls.

Documentation

There is documentation about the MVVM pattern and the MVVM Light Toolkit available here.

Installation and Creation

The MVVM Light Toolkit installation procedure (for the full package) is described here.

To create a new MVVM Light application, check this article.

If you prefer to use Nuget to add MVVM Light to an existing application, see this page.

Source code and Codeplex

The source code for the libraries is available on the Codeplex site for the MVVM Light Toolkit . This is also a good place to post suggestions/remarks/questions/discussions about the toolkit.

This article describes how to get the latest and greatest code from the Codeplex repository, and build the assemblies. It also shows how to run the unit tests in Visual Studio and how to install the new assemblies over an existing version.

Support

MVVM Light <3 StackOverflow

We encourage the use of StackOverflow for questions regarding MVVM Light Toolkit. StackOverflow is an awesome site for questions related to programming. There is a huge community of developers answering questions there. Please use the tag mvvm-light to tag your questions.

Donate

If you are so enclined, you can donate to MVVM Light Toolkit. Or, if you prefer, you can pay me a beer next time we're in the same vicinity. Really, it is OK too :)

Donate to MVVM Light Toolkit

Credits

The creation of this toolkit would not have been possible without the following people:

Josh Smith created the RelayCommand and gracefully allowed me to integrate it with very minor changes inside the toolkit and to distribute it. He is also my "go to guy" when I have issues (with my code, I mean).

Marlon Grech started mentioning using a mediator pattern to communicate between ViewModels. This discussion led me to create the Messenger class.

Jaime Rodriguez had numerous discussions with me regarding the creation of ViewModels and gave me food for thoughts...

Glenn Block helped me finalize some thoughts and sparked a lot of new ones. He also gave me great motivation to write this toolkit, and is an early tester and reviewer of the toolkit.

Corrado Cavalli gave me a lot of fantastic feedback and ideas for new features or improving existing features, and was one of the very active early testers.

Laurent Kempé was often here to keep me company in the wee morning hours, to talk about the direction and features of the toolkit, and gave me very valuable feeback. His team at Innoveo is using the MVVM Light Toolkit in their new WPF application, and very supportive when it comes to improving and testing the latest versions!

Brian Henderson and Rob Zelt helped test early versions and gave precious feedback and suggestions to improve the features.

Steven Robbins helped me with an issue and suggested I use a hack to solve it. "I think you can safely say the worse line of code in your toolkit is my one :-)"

All the XAML Disciples for the MANY discussions we had around the pattern and the best way to implement it in various situations.

Praises about the MVVM light toolkit

  • MVVM Light Toolkit is simply awesome - @robymes
  • Taking @LBugnion's MVVM Light Toolkit for a spin. Effing A! Totally easy. Mad props. - @jmorrill
  • #MVVM Light Toolkit is pretty nice. Light and to the point! Fills in all the gaps we struggle with usually :) - @HydroMan
  • I have been using #MVVM Light Toolkit by @LBugnion for a while now. It's light on features, but still functional and very useful - @ShiverCube
  • @LBugnion is taking out some of the monotony of implementing MVVM http://digg.com/u15wEj with MVVM light toolkit, the monotony killer :-) - @gblock
  • Just got the MvvmLight toolkit, looks great, good work! - @CSkardon
  • just want to say I love mvvm lite. I love the mediator pattern you have. I use it evrywhere to decouple b/n view & vm interaction - @CoreyGaudin
  • The Mvvm Light toolkit v3 alpha 2 by @LBugnion is very good. - @gulrog
  • Agreed...your EventToCommand code is very, very useful. Already plugged it in and stripped out the old way I was doing it. - @DanWahlin
  • Tweaking my RIA/MVVM app, I think I have fallen in love with MVVM Light's Messenger, a little too much... - @ShawnWildermuth