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
.
+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. –