No WPF, há um evento que pode ser usado para determinar quando uma TabControl
guia selecionada muda?
Eu tentei usar, TabControl.SelectionChanged
mas ele está sendo disparado muitas vezes quando a seleção de uma criança em uma guia é alterada.
wpf
events
tabcontrol
Jon Kragh
fonte
fonte
sender
vez dee.Source
e.Handled = true
para evitar que borbulheSe você definir a
x:Name
propriedade para cada umTabItem
como:Então você pode acessar cada um
TabItem
no evento:fonte
Se você quiser apenas ter um evento quando uma guia for selecionada, esta é a maneira correta:
E em seu código
fonte
Você ainda pode usar esse evento. Apenas verifique se o argumento do remetente é o controle com o qual você realmente se importa e, se for o caso, execute o código do evento.
fonte
O evento gerado está borbulhando até que seja tratado.
Esta parte xaml abaixo é acionada
ui_Tab_Changed
apósui_A_Changed
quando o item selecionado nasListView
alterações, independentemente daTabItem
alteração noTabControl
.Precisamos consumir o evento em
ui_A_Changed
(eui_B_Changed
, e assim por diante):fonte
Esse é o evento correto. Talvez não esteja conectado corretamente?
no codebehind ....
se eu definir um ponto de interrupção na linha i = 34, ele SOMENTE quebra quando eu mudo as guias, mesmo quando as guias têm elementos filho e um deles está selecionado.
fonte
Este código parece funcionar:
fonte
Se você estiver usando o padrão MVVM, é inconveniente (e quebra o padrão) usar o manipulador de eventos. Em vez disso, você pode vincular cada
Selector.IsSelected
propriedade TabItem individual a uma propriedade de dependência em seu modelo de visualização e, em seguida, manipular oPropertyChanged
manipulador de eventos. Dessa forma, você sabe exatamente qual guia foi selecionada / desmarcada com base noPropertyName
e tem um manipulador especial para cada guia.Exemplo:
MainView.xaml
Exemplo:
MainViewModel.cs
Se você
MainViewModel
é, emINotifyPropertyChanged
vez deDependencyObject
, use este:Exemplo:
MainViewModel.cs
fonte
Se alguém usa WPF Modern UI, não pode usar o evento OnTabSelected, mas pode usar o evento SelectedSourceChanged.
como isso
O código C # é
fonte