2010-09-08 7 views
1

Je souhaite valider tous les contrôles TextBox de l'événement de chargement de page. Je suis conscient d'une méthode pour le faire. Voici ce que j'ai utilisé. J'ai une ValidationRule personnalisée qui vérifie si un champ est requis ou non pour certaines de mes TextBoxes. Maintenant, si je cours ce code sur le chargement de la page, cela ne fonctionne pas. Cependant, si je mets ce code dans un événement de clic de bouton à la place, alors cela fonctionne! Comment valider mes contrôles sur une charge de contrôle?Forcer la validation de liaison dans WPF

+0

ce qui ne fonctionne pas? Bx est-il nul au chargement de la page? – Timores

+0

bx a une valeur à la fois pour la charge de contrôle et l'événement de clic sur le bouton. Mais sur la charge de contrôle, la validation ne se met pas à jour sans l'aide du répartiteur. Je ne sais pas pourquoi puisque je suis en cours d'exécution sur le fil de l'interface utilisateur. – Matt

Répondre

1

Essayez de mettre le code dans un Dispatcher.Begininvoke

Dispatcher.BeginInvoke(new Action(() => { 
      BindingExpression bx = myTextBox.GetBindingExpression(TextBox.TextProperty); 

      if (bx != null) 
      bx.UpdateSource(); 
    })); 
+0

Cela fonctionne mais avez-vous des explications sur pourquoi? Je ne suis pas sur un fil séparé. Le code en cours d'exécution s'exécute sur le thread d'interface utilisateur. – Matt

+0

Je ne suis pas exactement sûr. Je sais juste que certaines choses ne sont pas disponibles lorsque l'événement Loaded se déclenche ... Apparemment, c'est l'un de ces cas. – mdm20