前言:在WPF项目开发当中,遇到了需要用到快捷键的需求,于是对热键做了一个快速学习,但是这方面的资源很少。。。


热键大致分为三种场景,下面用QQ的使用场景举例:

全局热键:QQ的Ctrl+Alt+A截图。

焦点热键:QQ消息栏的Shift+Enter文本换行。

窗体热键:Alt+F4关闭QQ的窗口。

在WPF当中,全局热键 和 焦点热键都可以轻松实现,下面我只对窗体热键进行讲解。

第一步:右键项目根目录 引用 —> 管理Nuget程序包 —> 搜索NHotkey.Wpf并下载安装

注册命令推荐加在Window(Page和UserControl中需要鼠标点击焦点后才能触发热键)废话少说,看代码:

XAML中:

    <Window.Resources>
<RoutedUICommand x:Key="WinKeyDown" Text="F1" />
<!--WinKeyDown是静态资源名,F1是你的热键的代名词(随便起)用来后台接收-->
</Window.Resources>
<Window.InputBindings>
<KeyBinding Gesture="F1" Command="{StaticResource WinKeyDown }" HotkeyManager.RegisterGlobalHotkey="True"/>
<!--F1是键盘上的热键,核心属性HotkeyManager.RegisterGlobalHotkey="true" 加入即可无需焦点就可以触发热键,也不会发生全局热键的情况-->
</Window.InputBindings>
<Window.CommandBindings>
<CommandBinding Command="{StaticResource WinKeyDown}"
CanExecute="CommandBinding_CanExecute"/>
<!--CanExecute触发事件-->
</Window.CommandBindings>

后台代码:

        //窗体热键
private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
switch (((System.Windows.Input.RoutedUICommand)e.Command).Text)
{
case "F1":
MessageBox.Show("deep dark fantasy");
break;
default:
return;
}
}

就是这样,现在即使你的应用程序没有焦点,热键绑定的命令也将被调用。

就可以实现Ctrl+S保存,F5刷新等下意识操作。

搬运转发请链接注明出处。

WPF 窗体快捷键(热键)的更多相关文章

  1. WinForm 与WPF 窗体之间的想到调用

    先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyl ...

  2. 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件

    项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...

  3. 关于WinForm引用WPF窗体

    项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...

  4. WPF窗体视图中绑定Resources文件中字符串时,抛出:System.Windows.Markup.StaticExtension

    问题描述: 在Resources.resx定义了一个静态字符串字段Title,并在WPF窗体视图中绑定为窗体的标题: Title="{x:Static local:Resources.Tit ...

  5. WPF窗体禁用最大化按钮

    禁用WPF窗体的最大化按钮可以使用Windows API改变按钮状态的方法实现.使用GetWindowLong可以得到当前按钮的状态.使用SetWindowLong可以设置按钮的状态.使用SetWin ...

  6. WPF自学入门(八)WPF窗体之间的交互

    今天我们一起来看一下WPF窗体之间的交互-窗体之间的传值.有两个窗体,一个是父窗体,一个是子窗体.要将父窗体的文本框中的值传递给子窗体中的控件.我们该怎么实现? 接下来我们一起来实现窗体之间的传值,在 ...

  7. Windows 8 系统快捷键热键列表收集

    值得收藏参考的 Windows 8 系统快捷键热键列表收集大全汇总,键盘党效率党必备啊! 相信不少喜欢接触新鲜软件的同学都已经给电脑安装上Windows 8 操作系统了吧!这个系统优秀与否我们暂且不讨 ...

  8. 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上

    在.NET主程序中,我们可以通过创建 ExcelApplication 对象来打开一个Excel应用程序,如果我们想在Excle里面再打开WPF窗口,问题就不那么简单了. 我们可以简单的实例化一个WP ...

  9. WPF窗体の投影效果

    有时候我们需要给WPF窗体加上一个毛边(投影效果) 我们可以在窗体下加上如下代码 <Window.Effect> <DropShadowEffect BlurRadius=" ...

随机推荐

  1. Java练习 SDUT-1131_最大公约数与最小公倍数

    C/C++训练1---最大公约数与最小公倍数 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入两个正整数,求它们的最 ...

  2. oracle函数 dbtimezone

    [功能]:返回时区 [参数]:没有参数,没有括号 [返回]:字符型 [示例]select dbtimezone from dual;

  3. 06多次查询某区间内topk问题

            题目描述:给定一个数组,需要多次查找不同区间内的,第k大或者第k小的元素.         考虑题目是多次查找,如果采用只对查询区间内的元素进行排序的思路,然后输出第k大的数的策略,那 ...

  4. uni-app原生导航栏使用iconfont图标

    在 iconfont 将图标下载之后,会有一个 .ttf 后缀的文件 把它放进 static 文件夹里 然后打开在iconfont下载的  demo_index.html  文件 选择 Unicode ...

  5. Scrapy五大核心组件简介

    五大核心组件 scrapy框架主要由五大组件组成,他们分别是调度器(Scheduler),下载器(Downloader),爬虫(Spider),和实体管道(Item Pipeline),Scrapy引 ...

  6. 小程序加载大图片 使用widthFix时,图片先拉伸然后才显示完全

    <image src="http://www.ll.com/sss.jpg" mode="widthFix" style="width:180r ...

  7. DOM事件和一些实用笔记

    let el = document.body.querySelector("style[type='text/css'], style:not([type])");返回HTML文档 ...

  8. CentOS7 network.service loaded failed 处理技巧

    某一日,用systemctl --failed查看到如下错误信息,但实际上网络是OK的,真奇怪: 1 2 3 4 5 6 7 8 [root@localhost.localdomain media]# ...

  9. layer/layui弹出层插件bug

    <button class="layui-btn" lay-submit lay-filter="formDemo" id="layui-btn ...

  10. H3C 静态路由配置