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) ).
Überprüfen Sie einfach, was die OriginalSource
in Ihrem KeyDown
Event-Handler im Fenster:
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).
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%Tags und Links wpf c# event-bubbling