Tengo una ventana basada en MVVM con muchos controles, y mi modelo implementa IDataErrorInfo
.Cómo forzar la actualización de los errores de validación en la Vista de ViewModel usando IDataErrorInfo?
También hay un botón SaveCommand
, que realiza la validación mediante el análisis de la propiedad Model.Error
.
La vista muestra el borde rojo predeterminado alrededor de los controles con errores solo cuando cambio el valor de un control en particular, o cuando notifico sobre el cambio de esa propiedad usando PropertyChanged.
¿Cómo puedo forzar que View muestre todos los errores de validación incluso cuando no toqué los controles?
Todos mis enlaces de validación incluyen ValidatesOnDataErrors=True, NotifyOnValidationError=True
.
Sé que una solución es tener un cuadro agregado con todos los errores, pero preferiría mostrar los errores en cada control.
No deseo activar Model.NotifyPropertyChanged
para cada propiedad vinculada de ViewModel.
Uso WPF 4.0, no Silverlight, por lo que INotifyDataErrorInfo
no funcionará.
Gracias por el truco con PropertyChanged. No sabía que fuera posible. He encontrado otra discusión sobre este tema: http://stackoverflow.com/questions/1135012/wpf-mvvm-can-a-single-propertychanged-update-all-the-data-bindings-of-a-datate if Alguien está interesado. Esta es una buena respuesta si alguien tiene un viewModel simple y simple.Sin embargo, tengo una vista compleja con ViewModels anidados, así que tendría que escribir código para llamar a PropertyChanged una vez por cada modelo anidado enlazado Model/ViewModel que implementa INotifyPropertyChanged – surfen
. Es bueno saber este truco si uno quiere actualizar solo una parte de la vista relacionada. a un ViewModel particular – surfen
myControl.GetBindingExpression (ControlType.ControlProperty) .UpdateTarget(); en realidad actualiza su validación sin actualizar su propiedad de origen. – r41n