Hallo,
ich sitze jetzt seit zwei Tagen vor einem rießen Problem.
Ich habe ein WPF-Projekt, dieses wird vom Hauptprogramm (Win-Forms) aufgerufen.
In meinem WPF-Projekt habe ich eine Baumstruktur (Ordner, ähnlich eines Explorers). Wenn nun auf einen dieser Ordner (TreeViewItem in einem TreeView) geklickt wird, wird ein Event geworfen und die Id dieses Ordners an das Hauptprogramm zurückgegeben. Das Hauptprogramm geht dann zu unserem Server, holt den Inhalt des Ordners ab und stellt diesen dar.
Nun bekomme ich leider ein etwas seltsames Verhalten in meinem WPF-Projekt. Ich klicke auf ein TreeViewItem, dessen Inhalt wird abgeholt und dargestellt und plötzlich wird automatisch das Parent-TreeViewItem ausgewählt. Da ich das Event SelectedItem verwende, wird daher natürlich wieder der Inhalt des Parents im Hauptprogramm dargestellt und automatisch das nächste Parent im Baum abgeholt.
Das ganze passiert solange bis die Root-Node erreicht ist.
Ich kann mir einfach nicht erklären woher dieses Verhalten kommt, dass WPF automatisch die ganzen Parents abklappert. Ich bin den kompletten Code durchgegangen um herauszufinden was da getrieben wird, ich kann mir aber leider keinen Reim darauf machen. Ich stelle auch keine Funktionen bereit um das Parent zu selektieren, also kann dies auch kein ungewollter Fehler im Code sein.
WPF scheint das automatisch zu machen. Warum auch immer. Hatte eventuell schonmal jemand ein ähnliches Problem oder irgendwelche Ideen, was dort passieren könnte?
Edit
Achja was ich vergessen habe. Es liegt definitiv am Zusammenspiel der 2 Projekte. Wenn ich die RaiseEvent Anweisung auskommentiere und das Event praktisch nicht vom WinForms-Projekt behandelt wird bleibt die Selektierung nämlich richtig.
Ich habe auch schon einzelne Stellen in dem WinForms-Code auskommentiert und konnte damit auch erreichen, dass die Selektierung sich nicht geändert hat.
Aber es lässt sich keine genaue Stelle bestimmen, welche ausgeführt werden muss, damit dieses Phänomen auftritt. Das Projekt arbeitet mit Multithreading und daher kommt es irgendwann einfach zu diesem Phänomen.
Ich habe zu Testzwecken mal das ganze Multi-Threading weggelassen und die Funktionen der Reihe nach aufgerufen, dann wird einfach ganz am Ende wenn alle Funktionen abgeklappert wurden und das End Sub nach meiner RaiseEvent-Anweisung kommt das Parent Item ausgewählt.
ich sitze jetzt seit zwei Tagen vor einem rießen Problem.
Ich habe ein WPF-Projekt, dieses wird vom Hauptprogramm (Win-Forms) aufgerufen.
In meinem WPF-Projekt habe ich eine Baumstruktur (Ordner, ähnlich eines Explorers). Wenn nun auf einen dieser Ordner (TreeViewItem in einem TreeView) geklickt wird, wird ein Event geworfen und die Id dieses Ordners an das Hauptprogramm zurückgegeben. Das Hauptprogramm geht dann zu unserem Server, holt den Inhalt des Ordners ab und stellt diesen dar.
Nun bekomme ich leider ein etwas seltsames Verhalten in meinem WPF-Projekt. Ich klicke auf ein TreeViewItem, dessen Inhalt wird abgeholt und dargestellt und plötzlich wird automatisch das Parent-TreeViewItem ausgewählt. Da ich das Event SelectedItem verwende, wird daher natürlich wieder der Inhalt des Parents im Hauptprogramm dargestellt und automatisch das nächste Parent im Baum abgeholt.
Das ganze passiert solange bis die Root-Node erreicht ist.
Ich kann mir einfach nicht erklären woher dieses Verhalten kommt, dass WPF automatisch die ganzen Parents abklappert. Ich bin den kompletten Code durchgegangen um herauszufinden was da getrieben wird, ich kann mir aber leider keinen Reim darauf machen. Ich stelle auch keine Funktionen bereit um das Parent zu selektieren, also kann dies auch kein ungewollter Fehler im Code sein.
WPF scheint das automatisch zu machen. Warum auch immer. Hatte eventuell schonmal jemand ein ähnliches Problem oder irgendwelche Ideen, was dort passieren könnte?
Edit
Achja was ich vergessen habe. Es liegt definitiv am Zusammenspiel der 2 Projekte. Wenn ich die RaiseEvent Anweisung auskommentiere und das Event praktisch nicht vom WinForms-Projekt behandelt wird bleibt die Selektierung nämlich richtig.
Ich habe auch schon einzelne Stellen in dem WinForms-Code auskommentiert und konnte damit auch erreichen, dass die Selektierung sich nicht geändert hat.
Aber es lässt sich keine genaue Stelle bestimmen, welche ausgeführt werden muss, damit dieses Phänomen auftritt. Das Projekt arbeitet mit Multithreading und daher kommt es irgendwann einfach zu diesem Phänomen.
Ich habe zu Testzwecken mal das ganze Multi-Threading weggelassen und die Funktionen der Reihe nach aufgerufen, dann wird einfach ganz am Ende wenn alle Funktionen abgeklappert wurden und das End Sub nach meiner RaiseEvent-Anweisung kommt das Parent Item ausgewählt.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KillaChris“ ()