56 votes

Comment sélectionner par programme un TabItem dans WPF TabControl

J'aimerais savoir comment sélectionner un TabItem spécifique dans un TabControl WPF.

J'ai essayé ceux-ci ci-dessous mais rien ne fonctionne!

 MyTabControl.SelectedIndex = x

MyTabControl.SelectedItem = MyTabItem

MyTabControl.SelectedValue = MyTabItem

MyTabItem.IsSelected = True

62voto

Adrian Ratnapala Points 2438

Comme le dit @Chris, l'une des trois premières choses devrait fonctionner et comme le dit @Phyxx, cela ne fonctionne pas toujours vraiment. Le problème est quelque chose de subtil concernant l'ordre des changements de propriété. Pour contourner ce problème, vous devez laisser le WPF invoquer votre code de sélection d'onglets à son propre rythme :

 Dispatcher.BeginInvoke((Action)(() => MyTabControl.SelectedIndex = x));

Cela fait exactement ce que fait la minuterie de Phyxx, mais d'une manière légèrement moins extrême.

34voto

Chris Valentine Points 15990

Tous vos exemples sauf le troisième sont corrects et fonctionneront. Le problème doit être à un autre endroit. Peut-être avez-vous réinitialisé l'élément après le réglage ou votre code n'est-il jamais appelé ?

Valide

 MyTabControl.SelectedIndex = x   
MyTabControl.SelectedItem = MyTabItem    
MyTabItem.IsSelected = True 

Invalide

 MyTabControl.SelectedValue = MyTabItem 

17voto

kishhr Points 41

Parcourez les TabItems et pour l'onglet à sélectionner, définissez

 tabItem.IsSelected = true

S'il y a un autre endroit en raison du changement de reliure, vous verrez un problème. Sinon, le code ci-dessus devrait fonctionner.

15voto

user2976441 Points 121

Une chose qui n'a pas été mentionnée ci-dessus:

La principale raison pour laquelle quelque chose comme cela ne fonctionnera pas est que les éléments de l'onglet n'ont pas la propriété "Nom" définie. Chaque élément d'onglet du contrôle d'onglet vers lequel vous souhaitez accéder par programmation doit avoir sa propriété name définie pour que l'un des codes ci-dessus fonctionne.

 <tabItem Name="tab1"></tabItem>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X