Model View Viewmodel
lastmod 2025-11-06created 2018-08-267 edits
Model-view-viewmodel (MVVM) is a software architectural pattern that separates the development of the graphical user interface (the view) — implemented in a markup language or GUI code — from the business logic or back-end logic (the model), so that the view is not dependent on any specific model platform. The view model of MVVM is a value converter, meaning that the view model is responsible for exposing (converting) the data objects from the model in such a way that objects are easily managed and presented. In this respect, the view model is more model than view, and handles most if not all of the view's display logic. The view model may implement a mediator pattern, organizing access to the back-end logic around the set of use cases supported by the view.
MVVM is a variation of Martin Fowler's Presentation Model design pattern. It was invented by Microsoft architects Ken Cooper and Ted Peters to simplify event-driven programming of user interfaces. The pattern was incorporated into Windows Presentation Foundation (WPF) (Microsoft's .NET graphics system) and Silverlight (WPF's Internet application derivative). John Gossman, a Microsoft WPF and Silverlight architect, announced MVVM on his blog in 2005.
Model-view-viewmodel is also referred to as model-view-binder, especially in implementations not involving the .NET platform. ZK (a web framework written in Java) and KnockoutJS (a JavaScript library) use model-view-binder.