Realizar la validación en un objeto vinculado a datos después de que se haya actualizado la propiedad

StackOverflow https://stackoverflow.com/questions/62686

Pregunta

Tengo un formulario básico con controles que están vinculados a datos a un objeto que implementa el INotifyPropertyCambiado interfaz.Me gustaría agregar algo de validación a un par de propiedades, pero no quiero implementarlas. IDataErrorInfo con el fin de validar un par de propiedades.

He creado las funciones que realizan la validación y devuelven el mensaje de error (si corresponde) en el objeto.Lo que me gustaría hacer es llamar a estas funciones desde mi formulario cuando las propiedades relevantes del objeto hayan cambiado y configurar el Proveedor de errores control en mi formulario con cualquier mensaje de error que haya sido devuelto por las funciones de validación.

Intenté conectar controladores de eventos a los eventos Validating y LostFocus, pero parecen activarse antes de que se actualice mi objeto y, por lo tanto, no validan los datos correctos.Solo cuando salgo del cuadro de texto, vuelvo a entrar y luego salgo nuevamente, la validación se ejecuta con los datos correctos.

¿Existe otro evento al que pueda conectarme para poder llamar a estas funciones de validación después de que se haya actualizado la propiedad de mi objeto?¿O es mejor simplemente implementar el IDataErrorInfo ¿interfaz?

¿Fue útil?

Solución

No estoy seguro exactamente de cuál es el problema. ¿Está diciendo que no puede establecer la propiedad hasta que el control pierda el foco?

Si es así, debe configurar el enlace para actualizar OnPropertyChanged en lugar de OnValidation.

Vinculante a OnPropertyChanged significa que el enlace se actualiza inmediatamente, mientras que OnValidation solo actualiza el objeto subyacente cuando se activa una Validación (que para la mayoría de los controles es cuando pierden el foco).

Otros consejos

Creo que encontré una solución al problema con la ayuda de la publicación de Cameron.Cambié el enlace para actualizar OnPropertyChanged y ahora, cuando conecto el controlador de eventos al evento LostFocus, la validación se realiza en el valor "nuevo" del cuadro de texto en lugar de lo que se contenía anteriormente en el objeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top