WPF: Wie kann man die Tab-Navigation deaktivieren, ohne die Pfeiltasten-Navigation zu deaktivieren?

8

Ich habe IsTabStop auf alle Steuerelemente in meinem Fenster auf false gesetzt, so dass beim Drücken der Tab-Taste der Fokus nicht bewegt wird (ich brauche die Tab-Taste für etwas anderes). Aber dadurch wird die Navigation mit der Pfeiltaste unterbrochen - ich klicke auf ein Objekt in ListView und drücke dann nach oben / unten, um das ausgewählte Objekt nicht mehr zu ändern.

Gibt es eine Möglichkeit, die Tab-Navigation zu deaktivieren, ohne die Pfeiltasten zu berühren? Sie scheinen verwandt zu sein.

Ich habe versucht, IsTabStop auf wahr und TabNavigation auf false zu setzen, aber es funktioniert auch nicht.

%Vor%     
Meh 18.11.2010, 00:47
quelle

2 Antworten

14

In Ihrem Fenster (oder einem Vorfahre der Steuerelemente, an denen der Tab nicht arbeiten soll), schlucken Sie die Tabulatortaste.

Sie können es schlucken, indem Sie es an das PreviewKeyDown-Ereignis anhängen und e.Handled = true festlegen, wenn der Schlüssel ein Tab ist.

Reiner Code dahinter:

%Vor%

Sie können einen Keyboard-Handler auch so einstellen:

%Vor%

Sie benötigen jedoch einen entsprechenden Event-Handler:

%Vor%     
Ed Gonzalez 18.11.2010, 03:00
quelle
5

Ich glaube, Sie möchten die angefügte KeyboardNavigation.TabNavigation Eigenschaft auf Once in Ihrer ListView setzen. Ich habe dies mit einem templated ItemsControl getan und es scheint mir das Verhalten zu geben, das ich von einer ListBox erwarten würde, wo eine Registerkarte in das Steuerelement das erste Element auswählen wird, aber eine zusätzliche Registerkarte wird direkt aus der Listbox und auf die Registerkarte nächste Kontrolle.

Wenn Sie dieser Methode folgen, kann Ihr Beispiel möglicherweise auf genau dieses Kürzel verkürzt werden.

%Vor%

Ich habe das nicht mit dem ListView-Steuerelement getestet, aber ich wäre nicht überrascht, wenn es für Sie funktioniert.

    
jpierson 10.02.2011 07:06
quelle

Tags und Links