【WPF/WAF】设置快捷键(Shortcut Key)

基于WAF框架:WPF Application Framework (WAF)

View层XAML中设置热键。

    <Window.InputBindings>
        <!--<KeyBinding Command="{Binding SaveCommand}" Key="S" Modifiers="Control"/>-->
        <KeyBinding Command="{Binding AboutCommand}" Key="F1"/>
    </Window.InputBindings>

ViewModel中定义该AboutCommand命令。


        private ICommand aboutCommand;
        public ICommand AboutCommand
        {
            get { return aboutCommand; }
            set { SetProperty(ref aboutCommand, value); }
        }

控制层写AboutCommand命令的实现。

namespace WafApplication1.Applications.Controllers
{
    [Export]
    internal class ApplicationController
    {
        private readonly ShellViewModel shellViewModel;
        private readonly DelegateCommand aboutCommand;

        [ImportingConstructor]
        public ApplicationController(ShellViewModel shellViewModel)
        {
            this.shellViewModel = shellViewModel;
            this.aboutCommand = new DelegateCommand(AboutCommand);
        }

        private void AboutCommand()
        {
            MessageBox.Show("F1 Command!");
        }

        public void Initialize()
        {
            shellViewModel.AboutCommand = this.aboutCommand;
        }

        public void Run()
        {
            shellViewModel.Show();
        }

        public void Shutdown()
        {
        }
    }
}

运行该项目,按F1即可看到弹出弹窗。

这里写图片描述


新的问题

给该Window窗体注册的快捷键,必须要在该窗体获得焦点时快捷键才有效。如果该窗体内有别的控件(如ListBox)获取了焦点,再点击该快捷键将不起效果。这时候,可考虑同样给该ListBox控件添加相同的快捷键命令。

<!-- 快捷键 -->
<ListBox.InputBindings>
    <KeyBinding Command="{Binding ShortcutScaleCommand}" Key="F1"/>
</ListBox.InputBindings>
posted @ 2017-06-12 16:06  霍莉雪特  阅读(904)  评论(0编辑  收藏  举报