/ / Implementare INotifyPropertyChanged su modelli o viewmodels? - wpf, mvvm

Implementare INotifyPropertyChanged su modelli o viewmodels? - wpf, mvvm

È passato un po 'di tempo da quando mi sono immerso nel WPF e così mi sto dedicando un po' di tempo a riprendermi con alcune delle metodologie.

Per quanto riguarda questo Articolo MSDN - INotifyPropertyChanged dovrebbe essere implementato nelle classi del modello. Questo è un po 'confuso perché su altri articoli che vedo INotifyPropertyChanged in fase di implementazione su viewmodels. Alcuni addirittura lo implementano su entrambi. I dettagli di implementazione sono solo specifici del progetto o esiste un modo di "best practice" da implementare INotifyPropertyChanged in wpf e mvvm?

L'unico problema che vedo con l'aggiunta di modifichela notifica alle classi di modelli avviene quando si utilizza un framework di entità ORM e il primo approccio al database. Ogni volta che si verifica un cambiamento db e i tuoi modelli vengono aggiornati, qualsiasi codice scritto in essi viene sovrascritto. Mi rendo conto che probabilmente potrei creare un'altra classe parziale per attenuare questo, ma che sembra troppo ingombrante e hacky.

La mia domanda generale è: qual è la migliore pratica quando si implementa la notifica di modifica? Implementazione su modelli o modelli di visualizzazione?

risposte:

1 per risposta № 1

Il mio consiglio è usalo dove ne hai bisogno. Lo implementeresti su entrambi i modelli e visualizzerai i modelli.

Se hai una proprietà nel tuo ViewModel che vuoi monitorare nel tuo xaml, non creerai un modello per incapsularlo, perché sarebbe eccessivo.

Implementare INotifyPropertyChanged per ViewModel è assolutamente il modo comune nel pattern MVVM.

Puoi trovare questa pratica in diverse librerie MVVM, come MVVM Light, che ha una classe ViewModelBase che erediti dai tuoi ViewModels per poter implementare INotifyPropertyChanged di fatto.


0 per risposta № 2

INotifyPropertyChanged è comunemente usato in ViewModel per informare la Vista che alcuni valori sono stati modificati da qualche parte e che dovrebbe essere riassociato ai dati applicabili.

Per le modifiche nel modello:

Il ViewModel dovrebbe sapere che una proprietà è cambiata nel Modello semplicemente perché ViewModel ha cambiato la proprietà.