Ho una finestra basata su MVVM con molti controlli e il mio modello implementa IDataErrorInfo
.Come forzare l'aggiornamento degli errori di convalida su View from ViewModel usando IDataErrorInfo?
C'è anche un pulsante SaveCommand
, che esegue la convalida analizzando la proprietà Model.Error
.
La visualizzazione mostra il bordo rosso predefinito intorno controlli con errori solo quando cambio il valore di un particolare controllo, o quando notificare il cambiamento di tale proprietà utilizzando PropertyChanged.
Come posso forzare View per visualizzare tutti gli errori di convalida anche quando non ho toccato i controlli?
Tutte le associazioni di convalida includono ValidatesOnDataErrors=True, NotifyOnValidationError=True
.
so una soluzione è quella di avere una casella di aggregazione con tutti gli errori, ma io preferirei per visualizzare gli errori su base per-controllo.
Non voglio innescare Model.NotifyPropertyChanged
per ogni proprietà vincolati da ViewModel.
Io uso WPF 4.0, non Silverlight, quindi INotifyDataErrorInfo
non funzionerà.
Grazie per il trucco con PropertyChanged. Non sapevo che fosse possibile. Ho trovato un'altra discussione su questo argomento: http://stackoverflow.com/questions/1135012/wpf-mvvm-can-a-single-propertychanged-update-all-the-data-bindings-of-a-datate if chiunque è interessato Questa è una buona risposta se qualcuno ha un solo viewModel semplice.Tuttavia ho una vista complessa con ViewModels nidificati quindi dovrei scrivere codice per chiamare PropertyChanged una volta per ogni modello annidato associato/ViewModel che implementa INotifyPropertyChanged – surfen
È bello sapere questo trucco se si desidera aggiornare solo una parte della vista relativa a un particolare ViewModel – surfen
myControl.GetBindingExpression (ControlType.ControlProperty) .UpdateTarget(); effettivamente ottiene la tua convalida aggiornata senza aggiornare la tua proprietà di origine. – r41n