2012-07-07 5 views
1

Je n'arrive pas à trouver comment effectuer une validation conditionnelle requise.Attribut de vérification de validation conditionnelle

Fondamentalement, j'ai un objet de dialogue qui doit être validé. Il a un bool qui détermine un certain état du dialogue.

Si cet état est vrai alors une propriété doit être validée, si elle est fausse alors la propriété n'est pas utilisée et n'a donc pas besoin de validation. En même temps je voudrais conserver le comportement de validation standard lorsqu'une valeur n'est pas valide, à savoir la bordure rouge autour du contrôle auquel la propriété est liée.

Exemple de code sur ce que je suis:

public class Dialog 
{ 
    public bool UseValidation { get; set; } 

    [Required] 
    [StringLength(15)] 
    public string NotNullString { get; set; } 
} 

La raison est que je veux valider la boîte de dialogue lorsque le bouton OK est pressé, en utilisant ainsi la méthode Validator.TryValidateObject().

+0

Vous avez oublié de poser la question. – Adam

Répondre

1

Si vous utilisez DataBinding, vous pouvez créer des getters et des setters explicites pour votre propriété et émettre une exception si les données ne sont pas valides dans le setter. Vous pouvez ensuite définir la propriété ValidatesOnException de la liaison de zone de texte à True.

public string NotNullString { 
    get { return _NotNullString; } 
    set { 
      if(UseValidation && (String.IsNullOrEmpty(value) || value.Length > 15)) { 
       throw new Exception("Value must be between 1 and 15 characters long."); 
      } 
      _NotNullString = value; 
     } 
} 

Voici un bon article: http://www.codeproject.com/Articles/86955/Silverlight-4-Data-Validation-Tip-of-the-Day-Part

+0

Mais comment pourrais-je valider cela quand le setter n'a jamais été appelé? J'ai besoin d'une validation à effectuer à la demande via la méthode Validator.TryValidateObject(). Je devrais probablement l'éditer dans ma question – Perry

+1

Est-ce que c'est ce que vous cherchez? http://stackoverflow.com/questions/3400542/how-do-i-use-ivalidatableobject – Misha

Questions connexes