Wie verhindere ich, dass WPF KeyDown-Ereignisse von bestimmten enthaltenen Steuerelementen (z. B. TextBox) gesprudelt werden?

9

Mein Programm ist ziemlich groß und verwendet WPF, und ich möchte einen globalen Shortcut-Schlüssel haben, der 'R' ohne Modifikatoren verwendet.
Es gibt viele Steuerelemente wie TextBox, ListBox, ComboBox usw., die alle Buchstaben im Steuerelement selbst verwenden, was in Ordnung ist - das ist richtig für mich.
Aber - Ich möchte, dass dieses KeyDown-Ereignis nicht in das Hauptfenster blubbert , wo es die Verknüpfung auslöst, wenn ein Benutzer zum Beispiel den Buchstaben 'R' in eine TextBox schreibt.
Im Idealfall würde ich dies gerne tun wollen, ohne jede Instanz / jeden Typ von Steuerelementen (nicht nur die TextBox-Steuerelemente, obwohl sie die schlimmsten Übeltäter sind) anzugeben (und wenn-dann-logisch auszuführen) ).

    
redroze 21.07.2014, 19:17
quelle

2 Antworten

6

Überprüfen Sie einfach, was die OriginalSource in Ihrem KeyDown Event-Handler im Fenster:

ist %Vor%

Oder wenn Sie InputBindings verwenden, experimentieren Sie mit e.Handled = true im Ereignis " KeyDown " oder " PreviewKeyDown " in Ihrem Fenster und nicht mit den einzelnen Steuerelementen. In jedem Fall denke ich OriginalSource ist der Schlüssel zu Ihrer Antwort. (Ich schwöre, das war kein Wortspiel).

    
Troels Larsen 21.07.2014, 21:02
quelle
0

Es gibt ein Ereignis, wenn Sie KeyDown -Ereignis behandeln und Ihnen ein KeyEventArgs übergeben soll. Von dort aus kannst du Handled auf true setzen, damit es nicht aufbläht.

Beispiel

%Vor%     
123 456 789 0 21.07.2014 20:58
quelle

Tags und Links