Di WPF, apakah ada peristiwa yang dapat digunakan untuk menentukan kapan TabControl
tab yang dipilih berubah?
Saya telah mencoba menggunakan TabControl.SelectionChanged
tetapi sering kali dipecat ketika pilihan anak dalam tab diubah.
wpf
events
tabcontrol
Jon Kragh
sumber
sumber
sender
alih - alihe.Source
e.Handled = true
untuk mencegahnya meluapJika Anda menyetel
x:Name
properti ke masingTabItem
- masing sebagai:Kemudian Anda dapat mengakses masing-masing
TabItem
di acara tersebut:sumber
Jika Anda hanya ingin mengadakan acara saat tab dipilih, ini adalah cara yang benar:
Dan dalam kode Anda
sumber
Anda masih bisa menggunakan acara itu. Cukup periksa apakah argumen pengirim adalah kontrol yang benar-benar Anda pedulikan dan jika demikian, jalankan kode kejadian.
sumber
Acara yang dihasilkan menggelembung hingga ditangani.
Bagian xaml di bawah ini dipicu
ui_Tab_Changed
setelahui_A_Changed
item yang dipilih dalamListView
perubahan, terlepas dariTabItem
perubahan diTabControl
.Kita perlu mengonsumsi acara di
ui_A_Changed
(danui_B_Changed
, dan seterusnya):sumber
Jika Anda menggunakan pola MVVM maka tidak nyaman (dan merusak pola) untuk menggunakan event handler. Sebagai gantinya, Anda bisa mengikat masing-masing
Selector.IsSelected
properti TabItem ke properti dependensi di viewmodel Anda lalu menanganiPropertyChanged
event handler. Dengan begitu Anda tahu persis tab mana yang dipilih / batal dipilih berdasarkanPropertyName
dan Anda memiliki penangan khusus untuk setiap tab.Contoh:
MainView.xaml
Contoh:
MainViewModel.cs
Jika Anda
MainViewModel
adalahINotifyPropertyChanged
bukanDependencyObject
, kemudian gunakan ini sebagai gantinya:Contoh:
MainViewModel.cs
sumber
Itu acara yang benar. Mungkin tidak terhubung dengan benar?
di belakang kode ....
jika saya menetapkan breakpoint pada baris i = 34, itu HANYA rusak ketika saya mengganti tab, bahkan ketika tab memiliki elemen anak dan salah satunya dipilih.
sumber
Kode ini sepertinya berfungsi:
sumber
Jika ada yang menggunakan WPF Modern UI, mereka tidak dapat menggunakan acara OnTabSelected. Tetapi mereka dapat menggunakan acara SelectedSourceChanged.
seperti ini
Kode C # adalah
sumber