2009-12-10 9 views
5

Mientras trabajaba en algunos validadores personalizados en WPF, uno de mis compañeros de trabajo me señaló el IDataErrorInfo. Tengo una vista de muestra en XAML que tiene un cuadro de texto y un botón. En función del valor en el cuadro de texto, me gustaría que el botón esté habilitado o deshabilitado. Mi compañero de trabajo sugirió que extender IDataErrorInfo en el presente o mi vista y escribir una lógica personalizada para las propiedades 'Artículo' y 'Error' resolvería mi problema. Antes de que pudiera incorporar esto en mi código, pensé que debería entender cómo funciona la información IDataError y de qué se trata la implementación de esta interfaz que proporciona los enganches necesarios para activar la lógica de validación personalizada. ¡Alguna ayuda con este concepto sería extremadamente útil!¿Qué es IDataErrorInfo y cómo funciona con WPF?

Respuesta

4

IDataErrorInfo es una interfaz que una clase puede implementar para notificar a los suscriptores de la información de error de una propiedad específica, así como también errores a nivel de clase.

Si implementa esto para la clase que se usa como su DataContext (es decir, el modelo de vista en MVVM), puede configurar UpdatesOnValidationError como verdadero para los controles y establecer una plantilla personalizada para mostrar el elemento de manera diferente si hay errores. WPF maneja las cañerías por usted.

Aquí hay un short tutorial showing the entire process.

+0

Gracias por la respuesta rápida. De hecho, me preguntaba cómo funciona el cableado detrás de escena. Como soy nuevo en el mundo de WPF, me preguntaba cómo sabe exactamente Runtime que extender IDataErrorInfo activará la validación. Tu explicación es de gran ayuda, pero todavía estoy un poco confundido por cómo están conectadas las cosas juntas. –

+1

Básicamente, si inserta UpdatesOnValidationError, cada vez que una propiedad cambia (lo que WPF conoce a través de INotifyPropertyChanged o el mecanismo de propiedad de dependencia), comprueba la información de IDataError para esa propiedad. Si hay un error, cambia la plantilla. –

+0

Gracias Reed. Las cosas se están aclarando. En mi XAML, para mi Textbox.Text, estoy pensando en insertar lo siguiente: lo que califica como UpdatesOValidationError aquí? ¿ValidatesOnTargetUpdated = "True", llama a la propiedad Error del texto? –

0

que podría estar interesado en la aplicación de la muestraBookLibrary del 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.

0

Como se indicó anteriormente, las interfaces IDataErrorInfo proporcionan validación para las propiedades de ViewModel vinculadas a datos. Puede implementar reglas de validación personalizadas o utilizar los atributos de validación disponibles en System.ComponentModel.DataAnnotations.

He descubierto que muchos de los tutoriales sobre el tema están intrincados con más "pelusas" y que pueden dificultar que alguien que comienza con WPF capte el concepto. Escribí un tutorial directo al punto en refactorthis.net llamado WPF Validation tutorial for the rest of us. Learn to use IDataErrorInfo to automatically validate your views.

Cuestiones relacionadas