2009-05-06 18 views
5

दबाया जाता है कैसे पता लगाने के लिए मैं पता कैसे लगाते हैं जब कोई शॉर्टकट कुंजी जैसे Ctrl +हे एक WPF (की स्वतंत्र रूप से किसी विशेष नियंत्रण) में दबाया जाता है?जब एक हॉटकी (शॉर्टकट कुंजी)

मैं KeyDown पर कब्जा करने की कोशिश की लेकिन KeyEventArgs मुझे बता नहीं करता है या नहीं, नियंत्रण या Alt नीचे है।

उत्तर

10
private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyboardDevice.Modifiers == ModifierKeys.Control) 
    { 
     // CTRL is down. 
    } 
} 
+0

वहाँ शॉर्टकट कुंजी, जैसे रजिस्टर करने के लिए किसी भी अन्य तरीके हैं एक्सएएमएल में? – Qwertie

+2

इस धागे को देखें। http://stackoverflow.com/questions/612966/keyboard-events-in-a-wpf-mvvm- appplication –

1

मुझे अंततः एक्सएएमएल में कमांड के साथ ऐसा करने का तरीका पता चला। आप एक कस्टम आदेश का नाम (नहीं ApplicationCommands.Open तरह पूर्वनिर्धारित आदेशों में से एक) का उपयोग करना चाहते दुर्भाग्य से अगर यह यह है, कुछ इस तरह codebehind में परिभाषित करने के लिए आवश्यक है:

namespace MyNamespace { 
    public static class CustomCommands 
    { 
     public static RoutedCommand MyCommand = 
      new RoutedCommand("MyCommand", typeof(CustomCommands)); 
    } 
} 

XAML कुछ इस तरह चला जाता है। ..

<Window x:Class="MyNamespace.DemoWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:MyNamespace" 
    Title="..." Height="299" Width="454"> 
    <Window.InputBindings> 
     <KeyBinding Gesture="Control+O" Command="local:CustomCommands.MyCommand"/> 
    </Window.InputBindings> 
    <Window.CommandBindings> 
     <CommandBinding Command="local:CustomCommands.MyCommand" Executed="MyCommand_Executed"/> 
    </Window.CommandBindings> 
</Window> 

और निश्चित रूप से आप एक हैंडलर की जरूरत है:

private void MyCommand_Executed(object sender, ExecutedRoutedEventArgs e) 
{ 
    // Handle the command. Optionally set e.Handled 
} 
+0

आप रूटिंग यूआईसीओएमएंड भी बना सकते हैं और कुंजीबंडिंग को रखने से बचने के लिए कमांड पर एक विशेष कीबोर्ड इशारा भी जोड़ सकते हैं प्रत्येक विंडो में कोड जिसे आप इसे कार्यान्वित करना चाहते हैं। – jpierson

संबंधित मुद्दे