Osobne zdarzenia dla każdego poziomu TreeView

0

Witam mam prosty TreeView:

  • Klasy
    • 4d
    • 5f
  • Konta

Poszczególne klasy np. 4d są dynamicznie dodawane podczas działania programu(odczytuję z bazy jakie są klasy, a następnie dodaje TreeViewItems).

Chciałbym uzyskać efekt, że jeśli kliknę na jakąś klasę to mam wypisane o niej informacje - to jest ok działa poprawnie, a jak na "Klasy" to listę klas, lecz jeśli dodam zdarzenie dla "Klasy" to zdarzenie "Klasy" przysłania zdarzenie dla poszczególnych klas.

Np. klikam "Klasy" - lista klas, a jeśli kliknę 4d to znów lista klas, zamiast informacje o klasie.

Zdarzenie do TreeViewItem odpowiedzialnego za daną klasę dodaję tak:

treeViewItem.Selected += new RoutedEventHandler(ShowClassInformation_Selected);

Zaś dla głównego TreeViewItem tak:

Selected="classesTreeViewItem_Selected"

Szukałem trochę i znalazłem jakieś przykłady jednak one bardziej mi zakręciły niż wyjaśniły. Za pomoc z góry dziękuję :)

dodanie znacznika <code class="csharp"> - furious programming

0

Ok rozwiązałem problem. Tutaj małe wyjaśnienie jakby ktoś kiedyś szukał:

Dla zdarzenia selected "Klasy" dodałem taki warunek:

if (!treeViewItem.IsSelected)
            {
                ShowClassInformation_Selected(sender, e);

                return;
            }

Następnie w zdarzeniu selected dla poszczególnych klas dodałem taki warunek:

if(className == "Klasy")
            {
                return;
            } 

Pierwszy warunek sprawdza czy główny TreeViewItem jest zaznaczony, jeśli nie to wywołujemy zdarzenie Selected dla poszczególnych klas. Drugi warunek jest niezbędny, ponieważ jak zauważyłem po wywołaniu

ShowClassInformation_Selected(sender, e)

dla poszczególnej klasy, wystąpiło jeszcze wywołanie dla "Klasy".

Może nie jest to piękne rozwiązanie jednak działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1