Compte tenu d'un déjà chargé et rendu TabControl avec trois onglets, avec onglet sélectionné index étant 1 (le milieu):Comment accéder nouvel arbre visuel lorsque WPF TabControl selectedItem change
Tab 1: Y a un TextBox
Tab 2: A deux TextBoxes
Tab 3: A trois zones de texte
Si j'itérer arbre visuel avec VisualTreeHelper du selectedItem, je vais obtenir deux zones de texte au sein des enfants du tabcontrol.
Je souhaite répéter l'opération lorsque la sélection d'onglet change et accède aux commandes du nouvel onglet. Si je passe à l'index de tabulation 2, je devrais trouver trois zones de texte en utilisant VisualTreeHelper.
La solution normale serait de s'abonner à l'événement modifié de sélection et de parcourir l'arborescence pour récupérer les contrôles nouvellement affichés. Le problème est qu'en ce moment, l'arbre visuel a toujours l'ancien onglet, rendant cette recherche inutile.
Comment puis-je intercepter le moment où le nouveau TabItem est affiché et déclencher ma recherche?
Je crée un moteur de validation dynamique qui surveille tous les contrôles d'entrée d'une interface utilisateur donnée, même quand il change soit par des changements de modèle ContentControl, soit par des changements d'onglet TabControl ... J'espère que vous obtenez l'image.
Des idées? Le TabControl charge/décharge ses éléments lorsque vous changez d'onglet, vous devriez donc être en mesure d'attacher votre validation sur l'événement Loaded de TabItem
Avez-vous trouvé une solution? Je suis confronté exactement au même problème - j'ai besoin d'itérer les contrôles de la nouvelle Tab, mais VisualTreeHelper montre les anciens contrôles Tab dans le gestionnaire d'événements SelectionChanged. – digitguy