Tengo una aplicación WPF muy simple en la que estoy usando el enlace de datos para permitir la edición de algunos objetos CLR personalizados. Ahora quiero poner algo de validación de entrada cuando el usuario hace clic en guardar. Sin embargo, todos los libros de WPF que he leído no dedican realmente ningún espacio a este tema. Veo que puede crear reglas de validación personalizadas, pero me pregunto si esto sería excesivo para mis necesidades.
Entonces, mi pregunta es la siguiente: ¿hay una buena aplicación o artículo de muestra en algún lugar que demuestre las mejores prácticas para validar la entrada del usuario en WPF?
.net
wpf
data-binding
validation
Mark Heath
fuente
fuente
De la documentación de Patrones y Prácticas de MS :
La documentación continúa explicando cómo implementar IDataErrorInfo e INotifyDataErrorInfo.
fuente
Personalmente, estoy usando excepciones para manejar la validación. requiere los siguientes pasos:
el truco aquí es enlazar solo a objetos que derivan de DependencyObject. La implementación simple de INotifyPropertyChanged no funcionaría: hay un error en el marco que le impide acceder a la colección de errores.
fuente
Consulte también este artículo . Supuestamente, Microsoft lanzó su biblioteca empresarial (v4.0) a partir de sus patrones y prácticas donde cubren el tema de validación, pero Dios sabe por qué no incluyeron la validación para WPF, por lo que la publicación del blog a la que lo estoy dirigiendo explica lo que el autor hizo para adaptarlo. ¡Espero que esto ayude!
fuente
Puede que le interese la aplicación de muestra BookLibrary de WPF Application Framework (WAF) . Muestra cómo usar la validación en WPF y cómo controlar el botón Guardar cuando existen errores de validación.
fuente
Si su clase de negocios es utilizada directamente por su interfaz de usuario, es preferible usar IDataErrorInfo porque acerca la lógica a su propietario.
Si su clase de negocio es una clase de código auxiliar creada por una referencia a un servicio WCF / XmlWeb, entonces no puede / no debe usar IDataErrorInfo ni lanzar Exception para usar con ExceptionValidationRule. En su lugar, puede:
fuente