MVVM stands for "Model View ViewModel"
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.
Instead of requiring user interface (UXi) developers to write GUI code, they can
use the framework markup language (e.g., XAML) and create bindings to the view model,
which is written and maintained by application developers. This separation of roles
allows interactive designers to focus on UX needs rather than programming or business
logic, allowing for the layers of an application to be developed in multiple work
streams for higher productivity.
Even when a single developer works on the entire code base a proper separation of
the view from the model is more productive as the user interface typically changes
frequently and late in the development cycle based on end-user feedback.
Elements of the MVVM pattern include:
Model: as in the classic MVC pattern, the model refers to either a domain model
which represents the real state content (an object-oriented approach), or the data
access layer that represents that content (a data-centric approach).
View: as in the classic MVC pattern, the view refers to all elements displayed by
the GUI such as buttons, labels, and other controls
View model: the view model is a “model of the view” meaning it is an abstraction
of the view that also serves in mediating between the view and the model which is
the target of the view data bindings.
also see MVVM Pattern Advantages and MVVM Pattern implementation and Examples