b.MV-VM Pattern
Motivation
To create a highly responsive composit UI pattern
Summary
The Model View ViewModel (MVVM) is originated from Microsoft as a specialization of the presentation model design pattern introduced by Martin Fowler. mainly targeted to WPF and Silverlight application.
Largely based on the model–view–controller pattern (MVC), MVVM is targeted at modern UI development platforms which support Event-driven programming, such as HTML5,[2][3] Windows Presentation Foundation (WPF), Silverlight and the ZK framework.
MVVM was designed to make use of data binding functions in WPF to better facilitate the separation of view layer development from the rest of the pattern by removing virtually all GUI code (“code-behind”) from the view layer.
There are several framework like MV-VM tool Kit and PRISM that makes MV-VM development very easy
When to USE
When you are building thick client application like silverligt and WPF that provides rich data binding support.
Simple MVVM Tutorials
Books
MVVM-Frameworks
PRISM – provided by Microsoft. Works with MEF/Unity for dependency injection, has composite commands and is extensible. Detailed tutorials and walkthroughs at MSDN.
MVVM Light Toolkit – has Project and Item templates for Visual Studio and Expression Blend. Read more here and refer tutorials on working with VS and Expression Blend.
Caliburn Micro – supports ViewModel-First and View-First development, Asynchronous programming through co-routines.
Simple MVVM Toolkit – provides VS Project and Item Templates, Dependency Injection, support for Deep cloning and Property Association between Model and ViewModel
Catel – includes Project and Item templates, user controls and enterprise library classes. Supports Dynamic View Model injection, lazy loading of view models and validations. Also sports WP7 specific view model services