• 【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>
  • 相关阅读:
    javaScript设计模式探究【1】
    Java基础算法集50题
    DataTable学习笔记排序细则、列隐藏[3]
    javaScript设计模式探究【4】工厂模式
    javaScript设计模式探究【3】
    一次面试感想+js最近学习体会
    DataTable学习笔记范例应用篇[2]
    腾讯2013实习生招聘面经
    初品cakephp
    php编译中配置libxml2的错误
  • 原文地址:https://www.cnblogs.com/guxin/p/csharp-wpf-mvvm-set-shortcut-key.html
Copyright © 2020-2023  润新知