Sí, CacheMetadatos en su actividad es donde debe hacer su validación. La validación es un concepto que se aplica tanto al tiempo de ejecución del flujo de trabajo como al diseñador. (Esto se puede ver en el hecho de que todavía se puede intentar ejecutar flujos de trabajo, compilados o declarativas, que tienen errores de validación, pero una excepción será lanzada cuando lo hace.)
Ejemplo:
protected override void CacheMetadata(ActivityMetadata metadata)
{
if (this.Body == 0) metadata.AddValidationError(
new ValidationError(
"You forgot to supply a body for (this activity)",
/*iswarning = */ true,
"Body"));
}
(Ver ActivityMetadata.AddValidationError)
Su pregunta es secundaria hay soporte para añadir la validación del lado ActivityDesigner? La respuesta es 'no, no realmente' - sería posible para hacer un poco de WPF costumbre y el enlace de datos, que añade un poco de 'validación personalizada' en la parte superior de la ActivityDesigner, tal vez incluso utilizar AttachedPropertiesService para definir su propiedad SatisfiesConstraints en su clase de actividad . Pero es un trabajo extra, y no va a vincularse con la validación del tiempo de ejecución de forma consistente, por lo que es una idea de valor limitado.
Como nota para los espectadores, no siempre funciona bien con WPF. Finalmente creé un sistema híbrido en el que mi clase base (que extendía NativeActivity) recopilaba errores de validación de las implementaciones y los utilizaba tanto para las llamadas de CacheMetadata como para IDataErrorInfo. – Will