2012-03-27 5 views
0

Ich habe mich etwas ratlos im Umgang mit dem folgenden - Sagen wir mal, ich habe zwei Textfelder in einem Benutzer-Steuerelement in einem Register eines TabControl und verschiedene andere enthalten Kontrollen in den anderen Registerkarten, die für dieses Beispiel belanglos sind. Wenn meine Benutzer die Tabulatortaste drücken, um von einem Textfeld zum nächsten zu gelangen, schaltet die TabControl tatsächlich Registerkarten um ... natürlich handelt es sich nicht um ein Verhalten, das in der Produktion auftreten kann. Gibt es eine Möglichkeit, die Tab-Tastengeste an das aktive Benutzersteuerelement zu binden, damit es nicht aufbläht? Ich habe versucht, die folgenden bisher ohne Glück:Disable Key Gesture für TabControl in MVVM

XAML 
<TabControl.InputBindings> 
    <KeyBinding Gesture="TAB" Command="{Binding CancelTabChangeCommand}"/> 
</TabControl.InputBindings> 

C# 
this.CancelTabChangeCommand = new DelegateCommand<object>(t => { }); 

Normalerweise würde ich die Vorschau-Taste abfangen Ereignis nach unten und überprüfen, um zu sehen, ob die Gesten sind diejenigen, ich versuche zu deaktivieren und markieren Sie die behandelt Eigentum im Falle Argumente, aber da meine App MVVM ist, bin ich ein bisschen außerhalb meiner Fachkenntnisse in dieser Sache abgedriftet. Oben hatte ich gehofft, dass das Setzen der Tastengeste auf einen leeren Befehl das normale Ereignis überschreiben würde, aber das ist offensichtlich nicht der Fall.

Jede Hilfe wäre großartig.

Antwort

2

Sie können KeyboardNavigation.TabNavigation auf eine andere KeyboardNavigationMode als Continue festlegen, um das Verhalten des Tab-Schlüssels innerhalb eines angegebenen Bereichs zu steuern.

Zum Beispiel wird im Folgenden auf die Registerkarte Navigation innerhalb einer Benutzer Kontrolle halten:

<local:MyUserControl KeyboardNavigation.TabNavigation="Contained" /> 
+0

Danke, dass ... meistens gearbeitet. Aus welchem ​​Grund auch immer, wenn ich das letzte Steuerelement in meinem Benutzersteuerelement erreiche, verlässt es dann das Steuerelement, gibt es eine Möglichkeit, das vollständig zu blockieren, wo der Benutzer tatsächlich außerhalb des Steuerelements klicken müsste, um es freizugeben? – Aaj

+0

Nevermind, nur herausgefunden, dass "Cycle" genau das tun wird. Nochmals vielen Dank für Ihre Hilfe! – Aaj

+0

@Aaj Ich war mir nicht sicher was 'KeyboardNavigationMode' für Sie arbeiten würde, so froh, dass Sie das herausgefunden haben :) – Rachel