Hallo,
ich habe folgendes Problem mit Binding und einem TabControl auf einem weiteren Fenster (ChildWindow).
Ich habe hierzu ein Beispielprojekt zusammengeklickst, welches das Verhalten zeigt.
Das Projekt ist so aufgebaut:
Auf dem MainWindow finden sich 2 Buttons. Einer öffnet ein ChildWindow welches einen TabControl enthält und der andere erhöht den Index des SelectedItems des TabControls auf dem ChildWindow. Funktioniert wunderprächtig, solange man nur die Buttons bedient.
Wenn man jetzt aber über das ChildWindow ein TabItem auswählt, danach über den Button auf dem MainWindow den SelectedIndex verändert und wieder den Focus auf das ChildWindow legt, springt das TabControl wieder auf den Index zurück, welchen es hatte als man es direkt auf dem ChildWindow geklickt hat.
Es scheint mit, als ob im Hintergrund des ChildWindows irgendwo der direkt eingegebene Index hinterlegt und verwendet wird statt dem Index über Binding. Es schickt sogar den direkt eingegebenen Index an das ViewModel und überschreibt den index im Viewmodel wenn es Focus bekommt. Über Haltepunkte sieht man im Viewmodel, dass das Binding aber grundsätzlich in beide Richtungen funktioniert.
Weiß jemand einen Rat, wie hier ein richtiges TwoWay Binding funktionieren könnte? Der Index soll sowohl über den Button als auch im TabControl einstellbar sein. Die offensichtlichen Einstellungen beim Picken des Bindings wie UpdateSourceTrigger, Mode, und so weiter habe ich bereits ausprobiert.
Edit: Das gleiche Verhalten des TabControls lässt sich auch reproduzieren, wenn ich die TabItems direkt via "IsSelected" an ein Enum des ViewModels binde. Die direkt getroffene Auswahl überschreibt die Auswahl des Viewmodels, wenn das Fenster wieder den Focus bekommt.
Viele Grüße
Keks
ich habe folgendes Problem mit Binding und einem TabControl auf einem weiteren Fenster (ChildWindow).
Ich habe hierzu ein Beispielprojekt zusammengeklickst, welches das Verhalten zeigt.
Das Projekt ist so aufgebaut:
Auf dem MainWindow finden sich 2 Buttons. Einer öffnet ein ChildWindow welches einen TabControl enthält und der andere erhöht den Index des SelectedItems des TabControls auf dem ChildWindow. Funktioniert wunderprächtig, solange man nur die Buttons bedient.
Wenn man jetzt aber über das ChildWindow ein TabItem auswählt, danach über den Button auf dem MainWindow den SelectedIndex verändert und wieder den Focus auf das ChildWindow legt, springt das TabControl wieder auf den Index zurück, welchen es hatte als man es direkt auf dem ChildWindow geklickt hat.
Es scheint mit, als ob im Hintergrund des ChildWindows irgendwo der direkt eingegebene Index hinterlegt und verwendet wird statt dem Index über Binding. Es schickt sogar den direkt eingegebenen Index an das ViewModel und überschreibt den index im Viewmodel wenn es Focus bekommt. Über Haltepunkte sieht man im Viewmodel, dass das Binding aber grundsätzlich in beide Richtungen funktioniert.
Weiß jemand einen Rat, wie hier ein richtiges TwoWay Binding funktionieren könnte? Der Index soll sowohl über den Button als auch im TabControl einstellbar sein. Die offensichtlichen Einstellungen beim Picken des Bindings wie UpdateSourceTrigger, Mode, und so weiter habe ich bereits ausprobiert.
Edit: Das gleiche Verhalten des TabControls lässt sich auch reproduzieren, wenn ich die TabItems direkt via "IsSelected" an ein Enum des ViewModels binde. Die direkt getroffene Auswahl überschreibt die Auswahl des Viewmodels, wenn das Fenster wieder den Focus bekommt.
Viele Grüße
Keks
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SKeks“ ()