2009-07-17 5 views
1

En utilisant WPF IDataErrorInfo et le style que je veux créer la forme où je peux fournir l'utilisateur final trois statuts différents lors de la validation des données Pour rendre le scénario plus clairUtiliser IDataErrorInfo et style de sertissure Validation.HasError

1) Je textbox 2) Dès que l'utilisateur entre des données, il les valide et décide s'il est valide ou non - la plupart temps il montrera croix (X) icône indiquant des données invalides

3) Comme il est de valider sur UpdateSourceTrigger="PropertyChanged" il tournera l'icône croix coche verte dès qu'il obtient validé

-à-dire

[   ] i (tooltip- Any valid user name) 
[Ga  ] X (tooltip- Invalid user name. Must be 5 char long) 
[Gaurav ] * (it will show only correct icon, meaning valid value) 

Comment puis-je parvenir à l'aide IDataErrorInfo et le style, j'essayé de faire cela, mais dès que mon formulaire est chargé, il invalide toutes les données et affiche l'icône croisée à la première fois. Je veux montrer autre info-bulle et icône différente pour trois états (Initial info, Invalid data, Valid data)

Répondre

1

IDataErrorInfo ne contient aucun moyen de représenter trois états. Il ne connaît que "erreur" et "pas d'erreur".

La meilleure solution peut être de contourner l'utilisation de IDataErrorInfo par les éléments suivants:

  1. Créer une propriété pour chaque champ validé qui fournit l'état à trois états pour son domaine connexe. Liez ContentControls dans la vue de ces propriétés à trois états.
  2. Définissez un style unique pour tous ces nouveaux ContentControls.
  3. Utilisez les déclencheurs dans le style pour affecter la propriété ContentControl.ContentTemplate à l'état d'erreur et à l'état valide. Pour l'état initial, utilisez un Setter dans le Style lui-même pour n'afficher rien.

Vous devrez peut-être également créer des propriétés pour le texte d'info-bulle de chaque champ.

Questions connexes