The Model View ViewModel (MVVM) is an architectural pattern used in software  engineering that originated from Microsoft which is specialized in the  Presentation Model design pattern. It is based on the Model-view-controller  pattern (MVC), and is targeted at modern UI development platforms (WPF and  Silverlight) in which there is a UX developer who has different requirements  than a more “traditional” developer. MVVM is a way of creating client  applications that leverages core features of the WPF platform, allows for simple  unit testing of application functionality, and helps developers and designers  work together with less technical difficulties.

VIEW: A View is defined in XAML and should not have any logic in the  code-behind. It binds to the view-model by only using data binding.

MODEL: AModel is responsible for exposing data in a way that is easily consumable  by WPF. It must implement INotifyPropertyChanged and/or INotifyCollectionChanged  as appropriate.

VIEWMODEL: A ViewModel is a model for a view in the application or we can say as  abstraction of the view. It exposes data relevant to the view and exposes the  behaviors for the views, usually with Commands.