2010-02-19 20 views
6

¿Cómo podemos mostrar advertencias de usuarios de forma similar a los errores? La única diferencia es que el control, p. TextBox necesita tener una plantilla de error diferente y similar a Validation.HasError, necesita ser un Validation.HasWarning.WPF Estilos de error y advertencia separados

En otras palabras, no todos los problemas de validación son "errores" (en nuestra aplicación al menos). Queremos indicar visualmente si algo es una advertencia o un error.

Respuesta

3

A veces necesito ese terreno intermedio. Como Command s que necesitan 3 valores de CanExecute en lugar de true o false.

En cuanto a las advertencias que operan como validación, no conozco todas las piezas que uno necesitaría reunir, pero creo que sé cómo comenzar.

Debería confiar en las propiedades adjuntas y los comportamientos adjuntos (propiedades adjuntas que se suscriben a eventos en el objeto y realizan operaciones relacionadas con esos eventos cuando se activan). Puede tener uno que rija una colección de objetos ValidationRule para usar para determinar si se emite una advertencia o no, al igual que las propiedades Validation. Puede tener uno llamado HasWarning que se establece o desarma por la validación a la que se puede hacer referencia en activadores de estilo/plantilla.

Puede hacer que la pantalla de advertencia sea parte de la plantilla de cada control, o puede imitar Validation y tener una propiedad adjunta WarningTemplate que se utiliza para colocar la información de advertencia en AdornerLayer.


ya que la costumbre ValidationRule objetos devolver un objeto ValidationResult en la que el ErrorContent es simplemente un objeto, y este objeto también se expone en las ValidationError objetos como ErrorContent, también puede ser capaz de utilizar la validación periódica después de todo. Posiblemente podría utilizar una clase como su objeto ErrorContent que tiene una propiedad ErrorType de Advertencia o Error y se une a eso en su ErrorTemplate.

No estoy seguro de si tener ValidationError presente evitaría ciertas operaciones (como pulsaciones de botones) que desea permitir, pero podría crearse algún tipo de proxy en el ViewModel que juzgue el ErrorType.

+0

+1 para la observación de que 'ErrorContent' es un objeto, no una cadena. Esta es una forma muy simple de lograr esto. Usted acaba de crear una clase de mensaje con subclases de error, advertencia e información, y un 'DataTemplate' para cada tipo. –

Cuestiones relacionadas