WPF菜单快捷方式怎么设置

参考:http://stackoverflow.com/questions/1361350/keyboard-shortcuts-in-wpf

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

You need to use KeyBindings (and CommandBindings if you (re)use RoutedCommands such as those found in the ApplicationCommands class) for that inthe controls where the shortcuts should work.

e.g.

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

 

 

For custom RoutedCommands:

static class CustomCommands
{
    public static RoutedCommand DoStuff = new RoutedCommand();
}

usage:

<Window
    ...
    xmlns:local="clr-namespace:MyNamespace">
        <Window.CommandBindings>
                <CommandBinding Command="local:CustomCommands.DoStuff" Executed="DoStuff_Executed" />
        </Window.CommandBindings>
        <Window.InputBindings>
                <KeyBinding Key="D" Modifiers="Control" Command="local:CustomCommands.DoStuff"/>
        </Window.InputBindings>
    ...
</Window>

(It is often more convenient to implement the ICommand interface rather than using RoutedCommands. You canhave a constructor which takes delegates for Execute and CanExecute to easily create commands which do different things, suchimplementations are often called DelegateCommand orRelayCommand. This wayyou do not need CommandBindings.)

 

MenuItem上显示快捷键:

<MenuItemHeader="{x:Static Prop:Resources.File_AddBookItemHeader}" InputGestureText="Ctrl+N"Command="local:CustomCommands.DoStuff" Foreground="Black"/>

也可以不用再xaml中声明keyBinding,而用代码:

    static classCustomCommands

    {

        public staticRoutedCommand DoStuff = new RoutedCommand();

        staticCustomCommands()

        {

           DoStuff.InputGestures.Add(new KeyGesture(Key.N, ModifierKeys.Control));

        }

    }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值