2010-08-06 8 views
26

Nel modello MVVM, come è stata notificata la notifica di tutte le proprietà del modello di visualizzazione? Non voglio chiamare tutti gli eventi notifypropertychanged di tutte le proprietà.Come notificare tutte le proprietà del modello di vista è stato modificato

Ho una classe di entità e nel modello di vista ho scritto tutti i campi pubblici dell'entità come proprietà pubbliche. Voglio rebindare la nuova entità e scrivere semplicemente una singola riga di codice per notificare che tutte le proprietà sono cambiate?

Grazie per il vostro aiuto.

+0

+1 per insegnarmi qualcosa oggi. – Gishu

risposta

45

Basta generare l'evento PropertyChanged con una stringa vuota come nome della proprietà:

OnPropertyChanged(String.Empty); 
+2

Sì, l'esecuzione dell'evento PropertyChanged con null o una stringa vuota fa il trucco. –

+0

Ciao Thomas, è applicabile anche per le soluzioni Uwp? In alcuni progetti vedo che non funziona bene con Windows 8.1 o Universal Platform Platform. Grazie di tutto! – soydachi

+0

@dachibox, non ho mai usato UWP, quindi non lo so ... ma mi aspetto che funzioni pure. –

0

Ok quello che ho capito dalla tua domanda è questa ..

View <> ViewModel <> Entity (with a bunch of properties)

View è destinato a ViewModel , che delega all'entità. Ora si desidera sostituire l'entità di supporto e segnalare la vista per aggiornare per l'aggiornamento all'entità più recente.

Suggerirei implementare un indicizzatore nel ViewModel che contiene una stringa (il nome della proprietà di supporto). ViewModel può essere utilizzato come cache, se necessario, delegando all'entità di supporto solo in caso di errore.

Quando si sostituisce l'entità, viewModel cancella la cache e attiva NotifyPropertyChanged (nel set dell'indicizzatore) con String.Empty o null. Che ho imparato oggi, indicates all properties have changed.

In questo modo non si creano n proprietà di delega nel ViewModel. A google search result mostra che è stato provato almeno una volta con successo.

Problemi correlati