Una frase spiegazione:
MVVM è una rivisitazione del modello molto amato Model-View-Presenter (MVP) che è stato progettato per funzionare particolarmente bene con strutture di associazione dati forniti con WPF per separare la logica applicativa dalla progettazione dell'interfaccia utente.
più lungo, più utile, la spiegazione:
Il concetto di base del MVVM è la rottura a parte un'applicazione WPF in componenti separati ciascuno dei quali ha una responsabilità nel processo di ottenere informazioni sullo schermo.
In primo luogo avete il modello. Questa è una classe con funzionalità molto limitate che è generalmente popolata da una fonte esterna come un database o un servizio web. Ad esempio:
public class MessageModel
{
public string Message { get; set; }
}
In cima che utilizzi questa ViewModel, questo è dove la logica dell'applicazione siede, lo comunica la vista modifiche al modello e garantisce la coerenza dei dati. Implementando l'interfaccia INotifyPropertyChanged due databinding strada tra il ViewModel e la vista è dato gratuitamente WPF:
public class MessageViewModel : INotifyPropertyChanged
{
private MessageModel _model;
public string Message
{
get { return _model.Message; }
set
{
if (_model.Message != value)
{
_model.Message = value;
OnPropertyChanged("Message");
}
}
}
}
Infine si ha la vista.Questo è un file XAML che descrive la disposizione dei comandi necessari per visualizzare e modificare i dati nel ViewModel:
<Canvas>
<TextBox Text={"Binding Message"} />
</Canvas>
Il motivo per cui si va in tutto questo sforzo è che il modello è molto leggero e facilmente superato in tutta confini del dominio. È semplice inviarlo o riceverlo da un webservice o mapparlo a una tabella di database. Il ViewModel, d'altra parte, è complesso, ma ha poche dipendenze - non importa da dove il modello ottiene i suoi dati, solo che è lì e non ha alcun concetto di vista che lo rende molto testabile (il la logica della tua applicazione non si basa su un'interfaccia utente per testare). Infine, lo xaml è ben suddiviso in compartimenti e può essere consegnato a un designer che non ha bisogno di sapere nulla della logica dell'applicazione, solo che ViewModel presenterà determinati dati con determinati nomi. Questo incapsulamento semplifica molto la definizione dei ruoli in progetti di grandi dimensioni o l'unione di un'interfaccia utente limitata per testare la logica mentre quella reale viene ottimizzata.
fonte
2009-07-20 12:17:19
+1 Haha. Uno sviluppatore software classico.Hai dato all'utente esattamente ciò che ha chiesto, ma risulta che non gli è affatto giovato e probabilmente non è quello che voleva veramente. (Mi ha fatto ridere però) = :) –