Mam GUI z zakładkami z każdą zakładką zawierającą ramkę. W jednej z tych ram znajduje się DataGrid. Kiedy użytkownik wybierze tę kartę, potrzebuję posortować datagrid, więc używam zdarzenia TabControl SelectionChanged, aby wywołać sortowanie. Jednak zdarzenie to wyzwala za każdym razem, gdy element jest wybierany z DataGrid, mimo że same karty pozostają nienaruszone.W C# WPF, dlaczego moje zdarzenie SelectionChanged w TabControl jest uruchamiane zbyt często?
Próbowałem wiele różnych wydarzeń: GotFocus dla TabItem RequestBringIntoView dla TabItem
ale wszystkie one wydają się cierpieć z tego problemu. Co to powoduje?
Następnie musiałby obsłużyć każdy selektor na każdej ze swoich kart. O wiele łatwiej jest po prostu spojrzeć i sprawdzić, czy e.OriginalSource to Kontrola zakładek. –
To prawda, ale byłoby to czystsze, gdyby po prostu zaznaczył swoje wydarzenie jako Obsługiwane, gdy selektor zostanie z nim zrobiony. :) – Arcturus
Dziękuję bardzo za wskazanie problemu. Jeśli chodzi o rozwiązanie, w końcu dodałem "if (e.OriginalSource is System.Windows.Controls.TabControl)" do mojego zdarzenia TabControl.SelectionChanged, więc nie musiałbym tworzyć procedury obsługi zdarzeń dla mojego Datagridu. – Anders