Dans WPF, existe-t-il un événement qui peut être utilisé pour déterminer quand un TabControl
onglet sélectionné change?
J'ai essayé d'utiliser TabControl.SelectionChanged
mais il est déclenché plusieurs fois lorsque la sélection d'un enfant dans un onglet est modifiée.
wpf
events
tabcontrol
Jon Kragh
la source
la source
sender
place dee.Source
e.Handled = true
pour l'empêcher de bouillonnerSi vous définissez la
x:Name
propriété sur eachTabItem
comme:Ensuite, vous pouvez accéder à chacun
TabItem
lors de l'événement:la source
Si vous souhaitez simplement avoir un événement lorsqu'un onglet est sélectionné, voici la bonne façon:
Et dans votre code
la source
Vous pouvez toujours utiliser cet événement. Vérifiez simplement que l'argument expéditeur est le contrôle qui vous tient vraiment à cœur et si c'est le cas, exécutez le code d'événement.
la source
L'événement généré bouillonne jusqu'à ce qu'il soit traité.
Cette partie xaml ci-dessous se déclenche
ui_Tab_Changed
après leui_A_Changed
moment où l'élément sélectionné dans lesListView
modifications, quel que soit leTabItem
changement dans leTabControl
.Nous devons consommer l'événement dans
ui_A_Changed
(etui_B_Changed
, etc.):la source
Si vous utilisez le modèle MVVM, il n'est pas pratique (et rompt le modèle) d'utiliser le gestionnaire d'événements. Au lieu de cela, vous pouvez lier la
Selector.IsSelected
propriété de chaque TabItem à une propriété de dépendance dans votre viewmodel, puis gérer lePropertyChanged
gestionnaire d'événements. De cette façon, vous savez exactement quel onglet a été sélectionné / désélectionné en fonction dePropertyName
et vous disposez d'un gestionnaire spécial pour chaque onglet.Exemple:
MainView.xaml
Exemple:
MainViewModel.cs
Si votre
MainViewModel
estINotifyPropertyChanged
plutôt queDependencyObject
, utilisez plutôt ceci:Exemple:
MainViewModel.cs
la source
C'est l'événement correct. Peut-être que ce n'est pas correctement câblé?
dans le code derrière ...
si je définis un point d'arrêt sur la ligne i = 34, il se casse UNIQUEMENT lorsque je change d'onglets, même lorsque les onglets ont des éléments enfants et que l'un d'eux est sélectionné.
la source
Ce code semble fonctionner:
la source
Si quelqu'un utilise WPF Modern UI, il ne peut pas utiliser l'événement OnTabSelected, mais il peut utiliser l'événement SelectedSourceChanged.
comme ça
Le code C # est
la source