Model-View-ViewModel (MVVM) è un modello di progettazione software strutturato per separare la logica del programma ei controlli dell'interfaccia utente. MVVM è anche noto come model-view-binder ed è stato creato dagli architetti Microsoft Ken Cooper e John Gossman.
Come molti altri modelli di progettazione, MVVM aiuta a organizzare il codice e suddividere i programmi in moduli per rendere lo sviluppo, l'aggiornamento e il riutilizzo del codice più semplice e veloce. Il motivo viene spesso utilizzato in Windows e nel software di presentazione di grafica Web.
Il pattern MVVM viene utilizzato in Windows Presentation Foundation (WPF), che viene eseguito su .NET di Microsoft. Silverlight, un plug-in multimediale equivalente a Internet di Microsoft WPF, utilizza anche MVVM.
La separazione del codice in MVVM è suddivisa in View, ViewModel e Model:
- La vista è la raccolta di elementi visibili, che riceve anche l'input dell'utente. Ciò include interfacce utente (UI), animazioni e testo. Non si interagisce direttamente con il contenuto di View per modificare ciò che viene presentato.
- ViewModel si trova tra i livelli View e Model. Qui è dove sono alloggiati i controlli per interagire con View, mentre l'associazione viene usata per connettere gli elementi dell'interfaccia utente in View ai controlli in ViewModel.
- Model ospita la logica per il programma, che viene recuperata dal ViewModel al momento della ricezione di input dall'utente tramite View.