2011-07-26 6 views
3

J'ai une implémentation de INotifyDataErrorInfo, qui fonctionne comme je le souhaite avec les annotations de données, mais ce que je veux vraiment savoir, c'est comment je peux faire une validation conditionnelle.Silverlight Facultatif Validation du champ

Disons que j'ai 3 zones de texte, Nom, Email et Adresse. J'ai le nom comme champ obligatoire, mais je n'ai besoin que du courriel OU L'adresse doit être entrée, et donc les règles de validation doivent vérifier si l'une de ces deux propriétés a une valeur ou non.

J'espère que cela a du sens et que quelqu'un sera capable de me guider dans la bonne direction.

Répondre

2

Ajoutez l'attribut:

[Required(AllowEmptyStrings = true)] 

aux déclarations de propriété pour Email et Address dans la définition des métadonnées de votre classe. Cela permettra à la chaîne vide mais quand il est pas les règles de validation normales se mettra en marche Donc, si vous ajoutez le validateur de classe:.

[CustomValidation(typeof(MyValidator), "ValidationMethod")] 

cela peut alors dans ce contrôle de méthode que l'une de ces deux valeurs a été ensemble.

public static ValidationResult ValidationMethod(MyClass person, ValidationContext context) 
{ 
    if (person!= null) 
    { 
     if (string.IsNullOrWhiteSpace(person.Email) && 
      string.IsNullOrWhiteSpace(person.Address) 
     { 
      return new ValidationResult(....); 
     } 
    } 
    return ValidationResult.Success; 
} 
+0

C'est génial, merci @Chris – Joeb454