2009-09-28 7 views
0

J'utilise WPF et j'ai une entité liée à une série de contrôles. L'entité est décorée de deux valideurs de niveau de classe comme suit:Double valideurs de niveau classe NHibernate Problème

[ExampleValidator1, ExampleValidator2] 
public class Entity 

Une entité a une série de domaines dont tous ne sont pas toujours affichées, qui dépendent de la sélection de zone de liste déroulante. Un validateur existe pour chacune de ces sélections, si le « type » de l'entité ne correspond pas à un validateur particulier validateur retourne vrai et, évidemment, le validateur correct validera les champs réels comme suit:

public bool IsValid(object value, IConstraintValidatorContext constraintValidatorContext) 
    { 

     constraintValidatorContext.DisableDefaultError(); 
     var allPropertiesValid = true; 
     var entity= (Entity)value; 

     if (supplier.ParticularEntityType) 
     { 
      return true; 
     } 



     if (String.IsNullOrEmpty(entity.Name) || entity.Name.Length > 50) 
     { 
      constraintValidatorContext.AddInvalid<Entity, string>("must be 50 or shorter and not empty", x => x.Name); 
      allPropertiesValid = false; 
     } 

et XAML est la suivante:

   <TextBox Grid.Row="0" Grid.Column="3"> 
        <TextBox.Text> 
         <Binding Path="Entity.Name" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True"> 
         </Binding> 
        </TextBox.Text> 
       </TextBox> 

Il est évident que je reçois la belle jolie boîte rouge et outils conseils informer les utilisateurs des exigences de validation. Mon problème est que lorsque la sélection dans la combobox est modifiée, la surbrillance rouge persiste (devient un petit carré rouge quand un contrôle est caché). Quelqu'un pourrait me diriger dans le bon sens s'il vous plaît!

Répondre

0

Résolue en tirant un OnPropertyChanged lorsque la zone de liste déroulante est modifiée, ce n'est pas une solution idéale mais son fonctionnement.

Questions connexes