WPF-Baumansicht Auswahl löschen

7

Wie würde ich die TreeView-Auswahl in einem WPF-TreeView löschen? Ich habe versucht, das TreeNodes durchzulaufen und die IsSelected -Eigenschaft zu löschen, aber das ist eine ReadOnly -Eigenschaft. Irgendwelche Ideen?

Die TreeView verwendet die XML-Bindung über das XMLDataProvider -Objekt.

    
Luke 24.03.2009, 10:30
quelle

9 Antworten

10

Ich stieß auf genau die gleichen Probleme und schrieb den folgenden Code, der in jeder Baumansicht funktioniert, mit nur einem einzigen Zeilenaufruf an die erste Funktion.

%Vor%     
Tom Wright 10.09.2009 15:51
quelle
8

Nicht sicher, was Sie mit TreeNodes meinen.

Normalerweise hätten Sie eine entsprechende IsSelected -Eigenschaft in Ihrem Ansichtsmodell, an die Ihre Ansicht gebunden ist:

%Vor%

Daher würden Sie einfach die Datenelemente in Ihrem Ansichtsmodell durchlaufen und IsSelected = false dort festlegen.

Es klingt jedoch so, als hätten Sie keine solche Eigenschaft. In diesem Fall müssen Sie für jedes Datenelement die entsprechende TreeViewItem ermitteln. Informationen dazu finden Sie in der Eigenschaft TreeView.ItemContainerGenerator . Etwas wie:

%Vor%     
Kent Boogaart 24.03.2009 10:43
quelle
2

Suchen Sie das ausgewählte Element und legen Sie den Wert fest:

%Vor%     
amaca 24.03.2009 10:56
quelle
2

Dies funktioniert hervorragend als Erweiterung Methode, so dass Sie

aufrufen können %Vor%     
Gauthier 05.08.2010 19:11
quelle
1

Es war meine Erfahrung, von den Standardaufrufen von ItemContainerGenerator wegzubleiben, weil sie auf Knoten in einer Tiefe größer als n + 1 fehlschlagen. Ich verwende die folgende Kombination von Erweiterungsmethoden. Die ContainerFromItem-Erweiterungsmethoden stammen aus einem MSDN-Blog und haben bei der Behandlung von TreeView Wunder gewirkt.

%Vor%     
Josh 28.06.2011 13:09
quelle
0

Dies scheint so weit zu funktionieren, aber ich habe es vor etwa 5 Minuten eingefügt, also benutze es auf eigene Gefahr. Ich wollte im Grunde die Auswahl löschen, wenn der Benutzer innerhalb der Baumstruktur klickt, aber nicht auf einem Baumelement.

%Vor%     
Ben Dempsey 03.12.2009 17:37
quelle
0

Ich bin selbst in diese Situation mit einer benutzerdefinierten Tree List View-Implementierung gerannt, nachdem ich lange nach einer Lösung gesucht habe, die für mich funktioniert hat.

Die vollständige Erklärung finden Sie unter Ссылка

Die Grundidee ist, dass Sie das Ereignis TreeViewItem.Selected erfassen und die Quelle des Ereignisses im Attribut Tag in Ihrem TreeView speichern. Wenn Sie es dann löschen müssen, können Sie auf das Attribut Tag auf Ihrem Steuerelement zugreifen und den IsSelected -Wert auf False festlegen. Dies funktioniert für mich mit 2 Ebenen von verschachtelten Kindern. Hoffentlich wird es für Sie arbeiten.

Aus Gründen der Nachhaltigkeit:

TreeView-Deklaration

%Vor%

Ereignishandler

%Vor%

Auswahllogik löschen

%Vor%     
Philter 12.09.2013 19:23
quelle
0

Ich bin gerade auf dasselbe Problem gestoßen.

Eine schnelle und schmutzige Lösung

%Vor%     
DennisWu 26.04.2016 22:11
quelle
0
%Vor%     
cpllael 24.07.2017 20:56
quelle

Tags und Links