Benutzer mit den meisten Antworten
WPF Treeview DoubleClick Error

Frage
-
Hallo Forum,
ich habe eine TreeView und mache eine Abfrage auf den Header und Tag von dem item.
Der Code ist folgender.
private void treeViewBasis_MouseDoubleClick(object sender, MouseButtonEventArgs e) { int index = 0; if (treeViewBasis.Items.Count >= 0) { var tree = sender as TreeView; if (tree.SelectedValue != null) { TreeViewItem itemx = tree.SelectedItem as TreeViewItem; if (itemx.Tag.ToString() != "0") { MessageBox.Show("X" + itemx.Header.ToString()); MessageBox.Show("X" + itemx.Tag.ToString()); } } }
Das funktioniert auch einwandfrei , wenn ich ein neues Fenster mache.
Nun habe ich den Code in ein bestehendes Fenster mit einem neuen Tree kopiert.
Dann erhalte ich bei der Ausführung folgenden Fehler bei der Zeile
if (itemx.Tag.ToString() != "0")
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.Der itemx ist null
wenn ich aber in der Zeile
if (tree.SelectedValue != null)
denn tree ansehe, dann ist da aber das selected item mit den Informationen zu sehen und auch der Header und Tag "Text" wird angezeigt. Somit wird der if ja auch richtig ausgeführt. Warum funktioniert die Zeile
TreeViewItem itemx = tree.SelectedItem as TreeViewItem;
nicht ? im Test Projekt geht das aber? Was ist mein Fehler ?
Gruß Roland
Antworten
-
Ich würde da komplett dem Peter zustimen und noch anmerken:
Da du den wert von
tree.SelectedItem
sowieso umwandelst würde ich empfehlen die Umwandlung zuerst druchzuführen und dann zu schauen, ob das Produkt null ist.
Denn der as-Operator gibt immer dann null zurück, wenn das original-Objekt selber null ist oder es nicht möglich war zu casten.
Besser wäre also:
var n = tree.SelectedItem as TreeViewItem; if(n != null) { // Mit n arbeiten }
© 2015 Thomas Roskop
Germany // Deutschland
- Als Antwort markiert Roland DE Samstag, 20. Juni 2015 16:22
Alle Antworten
-
Hi Roland,
das Problem kann entstehen, wenn zum Zeitpunkt des Doppelklicks kein Knoten angeklickt wurde, z.B., wenn in den Bereich des Treeviews außerhalb der Knoten geklickt wurde oder die Knoten nicht vom Typ TreeViewItem sind.--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks -
Ich würde da komplett dem Peter zustimen und noch anmerken:
Da du den wert von
tree.SelectedItem
sowieso umwandelst würde ich empfehlen die Umwandlung zuerst druchzuführen und dann zu schauen, ob das Produkt null ist.
Denn der as-Operator gibt immer dann null zurück, wenn das original-Objekt selber null ist oder es nicht möglich war zu casten.
Besser wäre also:
var n = tree.SelectedItem as TreeViewItem; if(n != null) { // Mit n arbeiten }
© 2015 Thomas Roskop
Germany // Deutschland
- Als Antwort markiert Roland DE Samstag, 20. Juni 2015 16:22