WPF-Baumansicht: Wie implementiert man die Tastaturnavigation wie im Explorer?

8

Ich verwende die WPF-Baumansicht zum ersten Mal und bin erstaunt über all die grundlegenden Dinge, die es tut nicht . Eine davon ist die Tastaturnavigation, die in jeder beliebigen Baumansicht, z. in Windows Explorer oder Regedit.

So sollte es funktionieren:

Wenn die Baumansicht den Fokus hat und ich (Buchstaben / Zahlen) tippe, sollte die Auswahl zum ersten sichtbaren (aka expandierten) Element unterhalb des aktuell ausgewählten Elements verschoben werden, das der Zeichenfolge entspricht, die ich eingegeben habe, und diese in den Blick bringe. Wenn unter dem aktuellen Eintrag keine Übereinstimmung gefunden wird, sollte die Suche von oben fortgesetzt werden. Wenn keine Übereinstimmung gefunden wird, sollte das ausgewählte Element nicht geändert werden.

Solange ich weiter tippe, wächst der Suchstring und die Suche wird verfeinert. Wenn ich für eine bestimmte Zeit (2-5 Sekunden) aufhöre zu tippen, wird der Suchstring geleert.

Ich bin bereit, das "von Hand" von Grund auf zu programmieren, aber da dies so grundlegend ist, dachte ich, dass jemand das schon genau getan hat.

    
Helge Klein 23.09.2010, 15:32
quelle

4 Antworten

4

Lustig, das scheint kein beliebtes Thema zu sein. In der Zwischenzeit habe ich eine Lösung für das Problem entwickelt, die mich zufriedenstellt:

Ich füge ein Verhalten an die TreeViewItems an. In diesem Verhalten handle ich KeyUp-Ereignisse. Im Ereignishandler KeyUp durchsuche ich den visuellen Baum von oben nach unten, so wie er angezeigt wird. Wenn ich einen ersten passenden Knoten finde (dessen Name mit dem Buchstaben auf der gedrückten Taste beginnt), wähle ich diesen Knoten aus.

    
Helge Klein 24.09.2010, 19:43
quelle
1

Ich war auch auf der Suche nach Tastaturnavigation, erstaunlich, wie nicht offensichtlich die Lösung für Vorlagenvorlagen war.

Das Festlegen von SelectedValuePath in ListView oder TreeView gibt dieses Verhalten an. Wenn es sich bei den Elementen um Vorlagen handelt, wird auch die angefügte Eigenschaft TextSearch.TextPath auf den Pfad der Eigenschaft angewendet, nach der gesucht werden soll.

Hoffe, das hilft, es hat definitiv für mich funktioniert.

    
Miri Pruzan 20.02.2011 03:15
quelle
1

Ich weiß, dass das ein altes Thema ist, aber ich denke, dass es für einige Leute immer noch relevant ist. Ich habe diese Lösung gemacht. Es ist an das KeyUp- und das TextInput-Ereignis in einem WPF-TreeView angefügt. Ich benutze TextInput zusätzlich zu KeyUp, da ich Schwierigkeiten hatte, "nationale" Zeichen in echte Zeichen mit KeyEventArgs zu übersetzen. Das ging mit TextInput viel flüssiger.

%Vor%     
lars pehrsson 04.03.2015 14:20
quelle
0

Es ist nicht sehr einfach, wie wir es erwarten. Aber die beste Lösung, die ich gefunden habe, ist hier: Ссылка

Lassen Sie es mich wissen, wenn Sie weitere Informationen benötigen.

    
digitguy 11.07.2012 07:00
quelle

Tags und Links