2015-04-23 171 views
2

我試圖用鍵盤快捷鍵爲WPF菜單項

<MenuItem x:Name="Options" Header="_Options" InputGestureText="Ctrl+O" Click="Options_Click"/> 

到鍵盤快捷鍵在我的XAML代碼添加到菜單項與按Ctrl + Ø

但它無法正常工作 - 它不會調用Click選項。

有沒有解決方案?

+0

http://stackoverflow.com/questions/4682915/defining-menuitem-shortcuts –

回答

5

InputGestureText只是一個文本。它不會將密鑰綁定到MenuItem

此屬性不會將輸入手勢與菜單項相關聯;它只是添加文本到菜單項。應用程序必須處理用戶的輸入進行動作

你可以做的是與分配的輸入手勢的窗口

public partial class MainWindow : Window 
{ 
    public static readonly RoutedCommand OptionsCommand = new RoutedUICommand("Options", "OptionsCommand", typeof(MainWindow), new InputGestureCollection(new InputGesture[] 
     { 
      new KeyGesture(Key.O, ModifierKeys.Control) 
     })); 

    //... 
} 

創建RoutedUICommand,然後在XAML綁定該命令的一些方法集該命令針對MenuItem。在這種情況下,兩個InputGestureTextHeader將從RoutedUICommand拉,這樣你就不需要設置,對MenuItem

<Window.CommandBindings> 
    <CommandBinding Command="{x:Static local:MainWindow.OptionsCommand}" Executed="Options_Click"/> 
</Window.CommandBindings> 
<Menu> 
    <!-- --> 
    <MenuItem Command="{x:Static local:MainWindow.OptionsCommand}"/> 
</Menu> 
+0

謝謝,這真的工作 – keerthee

1

你應該以這種方式取得成功: Defining MenuItem Shortcuts 通過使用鍵綁定:

<Window.CommandBindings> <CommandBinding Command="New" Executed="CommandBinding_Executed" /> </Window.CommandBindings> <Window.InputBindings> <KeyBinding Key="N" Modifiers="Control" Command="New"/> </Window.InputBindings> 
+0

我不想一個內置命令,但我自己 – keerthee