En WPF, ¿hay algún evento que pueda usarse para determinar cuándo TabControl
cambia la pestaña seleccionada?
He intentado usarlo, TabControl.SelectionChanged
pero se dispara muchas veces cuando se cambia la selección de un niño dentro de una pestaña.
wpf
events
tabcontrol
Jon Kragh
fuente
fuente
sender
lugar dee.Source
e.Handled = true
para evitar que burbujeeSi establece la
x:Name
propiedad en cada unoTabItem
como:Entonces puedes acceder a cada uno
TabItem
en el evento:fuente
Si solo desea tener un evento cuando se selecciona una pestaña, esta es la forma correcta:
Y en tu codigo
fuente
Todavía podrías usar ese evento. Simplemente verifique que el argumento del remitente sea el control que realmente le interesa y, de ser así, ejecute el código del evento.
fuente
El evento generado se propaga hasta que se maneja.
Esta parte de xaml a continuación se activa
ui_Tab_Changed
después deui_A_Changed
que el elemento seleccionado en losListView
cambios, independientemente delTabItem
cambio en elTabControl
.Necesitamos consumir el evento en
ui_A_Changed
(yui_B_Changed
, etc.):fuente
Si está utilizando el patrón MVVM, entonces es inconveniente (y rompe el patrón) usar el controlador de eventos. En su lugar, puede vincular la
Selector.IsSelected
propiedad de cada TabItem individual a una propiedad de dependencia en su modelo de vista y luego manejar elPropertyChanged
controlador de eventos. De esa manera, sabrá exactamente qué pestaña se seleccionó / deseleccionó según laPropertyName
y tiene un controlador especial para cada pestaña.Ejemplo:
MainView.xaml
Ejemplo:
MainViewModel.cs
Si tu
MainViewModel
es enINotifyPropertyChanged
lugar deDependencyObject
, usa esto en su lugar:Ejemplo:
MainViewModel.cs
fuente
Ese es el evento correcto. ¿Quizás no está conectado correctamente?
en el código subyacente ...
si establezco un punto de interrupción en la línea i = 34, SOLO se rompe cuando cambio las pestañas, incluso cuando las pestañas tienen elementos secundarios y uno de ellos está seleccionado.
fuente
Este código parece funcionar:
fuente
Si alguien usa la IU moderna de WPF, no puede usar el evento OnTabSelected. Pero puede usar el evento SelectedSourceChanged.
Me gusta esto
El código C # es
fuente