Dove inserire l'interfaccia INotifyPropertyChanged in Model o ViewModel [closed]

0

Sono nuovo di MVVM pattern Ho una finestra che ha 3 caselle di testo: Nome, Indirizzo, Descrizione, un pulsante di salvataggio e un listview che visualizza rispettivamente i campi di cui sopra Nome, Indirizzo, Descrizione. Quando si fa clic sul pulsante Salva vuoi salvare i campi nel database e mostrare anche il record nella listview. Dove inserisco il modello di interfaccia INotifyPropertyChanged o in ViewModel o in entrambi i posti?

    
posta Mussammil 07.02.2014 - 11:09
fonte

1 risposta

9

Per prima cosa, dai un'occhiata a le basi di MVVM per capire meglio come dovrebbe funzionare il modello. La versione specifica di WPF potrebbe essere interessante.

In generale, il modello ha il seguente aspetto:

View < = (bound) = > ViewModel < = (chiamate di funzione + callback asincroni) = > Model

Tenendo presente questo schema, dovrebbe essere un po 'più chiaro che è responsabilità di ViewModel notificare View quando i dati sono cambiati. Pertanto, ViewModel deve implementare INotifyPropertyChanged .

Per convalidare ulteriormente questa decisione, puoi vedere che View deve essere completamente ignorante di Model e deve conoscere solo il suo ViewModel .

Per semplificare l'implementazione di INotifyPropetyChanged , prendi in considerazione la creazione di una classe base ViewModel che l'altro ViewModel s erediti da. In questo modo devi solo scrivere il codice una volta. Questo esempio dalla libreria MSDN ha una funzione di esempio NotifyPropertyChanged() che puoi usare come punto di riferimento. Credo che .NET 4.5 e versioni successive consentano la riflessione per essere utilizzato per il nome dell'oggetto anziché fare affidamento sulle stringhe passate.

    
risposta data 13.02.2014 - 16:35
fonte

Leggi altre domande sui tag