Gibt es in WPF ein Ereignis, mit dem bestimmt werden kann, wann sich TabControl
die ausgewählte Registerkarte von a ändert?
Ich habe es versucht, TabControl.SelectionChanged
aber es wird oft ausgelöst, wenn die Auswahl eines Kindes innerhalb eines Tabs geändert wird.
wpf
events
tabcontrol
Jon Kragh
quelle
quelle
sender
statte.Source
e.Handled = true
Sie einfach hinzu , um zu verhindern, dass es sprudeltWenn Sie die
x:Name
Eigenschaft auf Folgendes festlegenTabItem
:Dann können Sie
TabItem
bei der Veranstaltung auf jeden zugreifen :quelle
Wenn Sie nur ein Ereignis haben möchten, wenn eine Registerkarte ausgewählt ist, ist dies der richtige Weg:
Und in deinem Code
quelle
Sie können dieses Ereignis weiterhin verwenden. Überprüfen Sie einfach, ob das Absenderargument das Steuerelement ist, das Sie wirklich interessiert, und führen Sie in diesem Fall den Ereigniscode aus.
quelle
Das generierte Ereignis sprudelt, bis es behandelt wird.
Dieser XAML - Abschnitt unter Trigger
ui_Tab_Changed
nach ,ui_A_Changed
wenn das Element in den ausgewähltenListView
Änderungen, unabhängig vonTabItem
Veränderung in demTabControl
.Wir müssen das Ereignis in
ui_A_Changed
(ui_B_Changed
und so weiter) konsumieren :quelle
Das ist das richtige Ereignis. Vielleicht ist es nicht richtig verkabelt?
im Codebehind ....
Wenn ich einen Haltepunkt in der Zeile i = 34 setze, wird dieser NUR unterbrochen, wenn ich Registerkarten ändere, selbst wenn die Registerkarten untergeordnete Elemente enthalten und eines davon ausgewählt ist.
quelle
Dieser Code scheint zu funktionieren:
quelle
Wenn Sie das MVVM-Muster verwenden, ist es unpraktisch (und bricht das Muster), den Ereignishandler zu verwenden. Stattdessen können Sie die
Selector.IsSelected
Eigenschaften jedes einzelnen TabItems an eine Abhängigkeitseigenschaft in Ihrem Ansichtsmodell binden und dann denPropertyChanged
Ereignishandler behandeln. Auf diese Weise wissen Sie genau, welche Registerkarte basierend auf dem ausgewählt / abgewählt wurde,PropertyName
und Sie haben für jede Registerkarte einen speziellen Handler.Beispiel:
MainView.xaml
Beispiel:
MainViewModel.cs
Wenn Ihr
MainViewModel
istINotifyPropertyChanged
nichtDependencyObject
, dann verwenden Sie stattdessen:Beispiel:
MainViewModel.cs
quelle
Wenn jemand die moderne Benutzeroberfläche von WPF verwendet, kann er das Ereignis OnTabSelected nicht verwenden. Er kann jedoch das Ereignis SelectedSourceChanged verwenden.
so was
C # -Code ist
quelle