En WPF, ¿hay algún evento que pueda usarse para determinar cuándo TabControlcambia la pestaña seleccionada?
He intentado usarlo, TabControl.SelectionChangedpero 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

senderlugar dee.Sourcee.Handled = truepara evitar que burbujeeSi establece la
x:Namepropiedad en cada unoTabItemcomo:Entonces puedes acceder a cada uno
TabItemen 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_Changeddespués deui_A_Changedque el elemento seleccionado en losListViewcambios, independientemente delTabItemcambio 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.IsSelectedpropiedad de cada TabItem individual a una propiedad de dependencia en su modelo de vista y luego manejar elPropertyChangedcontrolador de eventos. De esa manera, sabrá exactamente qué pestaña se seleccionó / deseleccionó según laPropertyNamey tiene un controlador especial para cada pestaña.Ejemplo:
MainView.xamlEjemplo:
MainViewModel.csSi tu
MainViewModeles enINotifyPropertyChangedlugar deDependencyObject, usa esto en su lugar:Ejemplo:
MainViewModel.csfuente
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