WPF Menu實現快捷鍵操作

很多小伙伴說,在Menu中,實現單個快捷鍵操作很簡單,怎么實現多個快捷鍵操作和,組合快捷鍵呢,今天他來了。

上代碼和效果圖

一、Ctrl + Shift + 任意子母鍵實現快捷鍵組合

<Window x:Class="XH.TemplateLesson.MenuWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:XH.TemplateLesson"mc:Ignorable="d"Title="MenuWindow" Height="450" Width="800"><Window.InputBindings><!-- 定義組合快捷鍵 Ctrl+Shift+S --><!--先要什么組合修改key 或者 Modifiers 即可注意:這里只可以改為Ctrl Alt Shift Windows + 任意字母鍵的快捷方式--><KeyBinding Key="S" Modifiers="Control+Shift" Command="{Binding NewCommand}" /></Window.InputBindings><Grid><Menu><MenuItem Header="新建(_F)"><MenuItem Header="新建" /><MenuItem Header="全部保存" Command="{Binding NewCommand}" InputGestureText="Ctrl+Shift+S"  /></MenuItem><MenuItem Header="編輯(_E)"/></Menu></Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace XH.TemplateLesson
{/// <summary>/// MenuWindow.xaml 的交互邏輯/// </summary>public partial class MenuWindow : Window{public ICommand NewCommand { get; set; }public MenuWindow(){InitializeComponent();DataContext = this;NewCommand = new RelayCommand(ExecuteNew);}private void ExecuteNew(object parameter){MessageBox.Show("New Command Executed");}public class RelayCommand : ICommand{private readonly Action<object> _execute;private readonly Func<object, bool> _canExecute;public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null){_execute = execute;_canExecute = canExecute;}public bool CanExecute(object parameter){return _canExecute == null || _canExecute(parameter);}public void Execute(object parameter){_execute(parameter);}public event EventHandler CanExecuteChanged{add { CommandManager.RequerySuggested += value; }remove { CommandManager.RequerySuggested -= value; }}}}
}

直接Ctrl + Shift + S彈出:

二、實現Ctrl + 多個字母鍵組合

<Window x:Class="XH.TemplateLesson.MenuWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:XH.TemplateLesson"mc:Ignorable="d" <!--綁定鍵盤事件-->PreviewKeyDown="Window_PreviewKeyDown"PreviewKeyUp="Window_PreviewKeyUp"Title="MenuWindow" Height="450" Width="800"><Grid><Menu><MenuItem Header="新建(_F)"><MenuItem Header="新建" /><MenuItem Header="整理代碼格式" InputGestureText="Ctrl+K+D"  /></MenuItem></Menu></Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace XH.TemplateLesson
{/// <summary>/// MenuWindow.xaml 的交互邏輯/// </summary>public partial class MenuWindow : Window{private bool _isCtrlPressed;private bool _isAPressed;public MenuWindow(){InitializeComponent();}// 下方的K 和D 根據自己寫的代碼來進行修改private void Window_PreviewKeyDown(object sender, KeyEventArgs e){// 先 Cttrlif (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl){_isCtrlPressed = true;}// 再 Ctrl + K else if (e.Key == Key.K && _isCtrlPressed){_isAPressed = true;}// 最后 Cttrl + K + Delse if (e.Key == Key.D && _isCtrlPressed && _isAPressed){ExecuteCustomCommand();}}// 鍵盤釋放 如果釋放 無效private void Window_PreviewKeyUp(object sender, KeyEventArgs e){if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl){_isCtrlPressed = false;}else if (e.Key == Key.K){_isAPressed = false;}}private void ExecuteCustomCommand(){MessageBox.Show("快捷鍵調用成功: Ctrl + K + D");}}
}

按下Ctrl + K + D:

單鍵 Alt + 字母彈出

<Menu><!--直接下劃線 + 字母 就可以alt + 字母彈出--><MenuItem Header="新建(_F)"><MenuItem Header="新建" /><MenuItem Header="整理代碼格式" InputGestureText="Ctrl+K+D"  /></MenuItem>
</Menu>

演示 :

好了,以上就是WPF中Menu控件中,所有快捷鍵的使用方法了,感覺有用的話,點個贊唄。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39994.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39994.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39994.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【測試開發】【postman】按順序循環執行接口

postman按順序循環執行接口 新建接口接口排序執行請求集合 新建接口 Request 001 Request 002 Request 003 接口排序 在Request 001的Tests中添加代碼 postman.setNextRequest("Request 002");在Request 002的Tests中添加代碼 postman.setNextRequest("Requ…

Redis 7.x 系列【17】四種持久化策略

有道無術&#xff0c;術尚可求&#xff0c;有術無道&#xff0c;止于術。 本系列Redis 版本 7.2.5 源碼地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目錄 1. 概述2. 案例演示2.1 無持久化2.2 RDB2.3 AOF2.4 混合模式2.4.1 方式一&#xff1a;…

線性代數|機器學習-P21概率定義和Markov不等式

文章目錄 1. 樣本期望和方差1.1 樣本期望 E ( X ) \mathrm{E}(X) E(X)1.2 樣本期望 D ( X ) \mathrm{D}(X) D(X) 2. Markov 不等式&Chebyshev不等式2.1 Markov不等式公式 概述2.2 Markov不等式公式 證明&#xff1a;2.3 Markov不等式公式 舉例&#xff1a;2.4 Chebyshev不…

AI繪畫 Stable Diffusion圖像的臉部細節控制——采樣器全解析

大家好&#xff0c;我是畫畫的小強 我們在運用AI繪畫 Stable Diffusion 這一功能強大的AI繪圖工具時&#xff0c;我們往往會發現自己對提示詞的使用還不夠充分。在這種情形下&#xff0c;我們應當如何調整自己的策略&#xff0c;以便更加精確、全面地塑造出理想的人物形象呢&a…

域環境提權

域內提權漏洞(1) Netlogon域權限提升 1.查看域控主機名稱 net group "domain controllers" /domain 2.檢測漏洞是否存在 https://github.com/SecuraBV/CVE-2020-1472.git python zerologon_tester.py OWA 192.168.52.138 3.漏洞利用&#xff0c;對域賬號重置 ht…

《簡歷寶典》01 - 一文帶你學會如何寫一份糟糕透頂的簡歷

我們每個人幾乎都會面對找工作這件事&#xff0c;而找工作或者說求職首先就是要寫一份簡歷。今天狗哥將以一個不同的視角帶你寫一份無與倫比&#xff0c;糟糕透頂的求職簡歷&#xff0c;說實話&#xff0c;其實幾年前&#xff0c;我就是這么寫的。 目錄 1. 文件名 2. 基本信…

【項目管理】項目風險管理(Word原件)

風險和機會管理就是在一個項目開發過程中對風險進行識別、跟蹤、控制的手段。風險和機會管理提供了對可能出現的風險進行持續評估&#xff0c;確定重要的風險機會以及實施處理的策略的一種規范化的環境。包括識別、分析、制定處理和減緩行動、跟蹤 。合理的風險和機會管理應盡力…

白騎士的Python教學進階篇 2.4 高級數據結構

系列目錄 上一篇&#xff1a;白騎士的Python教學進階篇 2.3 文件操作??????? 在Python中&#xff0c;掌握高級數據結構可以顯著提升你的編程效率和代碼可讀性。高級數據結構包括列表推導式、生成器與迭代器以及裝飾器。本文將詳細介紹這些高級數據結構&#xff0c;幫助…

算法刷題1-10大排序算法匯總

十種常見排序算法可以分為兩大類&#xff1a; 比較類排序&#xff1a;通過比較來決定元素間的相對次序&#xff0c;由于其時間復雜度不能突破O(nlogn)&#xff0c;因此也稱為非線性時間比較類排序。非比較類排序&#xff1a;不通過比較來決定元素間的相對次序&#xff0c;它可…

服務器安裝Nginx教程

1、安裝所需依賴 yum -y install gcc gcc-c make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 2、創建nginx目錄并下載Nginx安裝包 //進入/usr/local cd /usr/local//創建nginx目錄 mkdir nginx//進入nginx目錄 cd nginx//下載nginx tar包 wget http://…

Lesson 47 A cup of coffee

Lesson 47 A cup of coffee 詞匯 like v. 喜歡&#xff0c;想要 用法&#xff1a;like 物品 / 人 喜歡……    like 動詞ing 喜歡做……&#xff08;習慣性&#xff09;    like to 動詞原形 喜歡做……&#xff08;一次性&#xff09; 例句&#xff1a;我喜歡小狗…

[leetcode hot 150]第五百三十題,二叉搜索樹的最小絕對差

題目&#xff1a; 給你一個二叉搜索樹的根節點 root &#xff0c;返回 樹中任意兩不同節點值之間的最小差值 。 差值是一個正數&#xff0c;其數值等于兩值之差的絕對值。 解析&#xff1a; minDiffInBST 方法是主要方法。創建一個 ArrayList 來存儲樹的節點值。inorderTrave…

前端日常掃盲

一、js標簽語句 直接上代碼 for(let i 0; i < 10; i){console.log("頂層循環");for(let j 0; j < 10; j){console.log("內層循環",i,j);if(i * j > 30){console.log("退出頂層循環");break;}} }如上面的代碼&#xff0c;雙層循環&a…

opencv-yolo-tiny車輛檢測 ----20240705

opencv-yolo-tiny 實現車輛檢測 opencv.dnn模塊已經支持大部分格式的深度學習模型推理,該模塊可以直接加載tensorflow、darknet、pytorch等常見深度學習框架訓練出來的模型,并運行推理得到模型輸出結果。opecnv.dnn模塊已經作為一種模型部署方式,應用在工業落地實際場景中。…

持續交付:自動化測試與發布流程的變革

目錄 前言1. 持續交付的概念1.1 持續交付的定義1.2 持續交付的核心原則 2. 持續交付的優勢2.1 提高交付速度2.2 提高軟件質量2.3 降低發布風險2.4 提高團隊協作 3. 實施持續交付的步驟3.1 構建自動化測試體系3.1.1 單元測試3.1.2 集成測試3.1.3 功能測試3.1.4 性能測試 3.2 構建…

(一)進程與線程

一、進程和線程的概念 1.1 進程 程序由指令和數據組成&#xff0c;但這些指令要運行&#xff0c;數據要讀寫&#xff0c;就必須將指令加載至CPU&#xff0c;數據加載至內存。在指令運行過程中還需要用到磁盤、網絡等設備。進程就是用來加載指令、管理內存、管理 IO 的。當一個…

鴻蒙系統的開發與學習

1.開發工具的下載 DevEco Studio-HarmonyOS Next Beta版-華為開發者聯盟 安裝、環境配置時&#xff0c;建議 自定義目錄 注意&#xff1a;路徑中不要有 中文、特殊字符。 2.ArkTS基礎總結 1&#xff09;三種數據類型 ① string 字符串&#xff1a;描述信息 ② number 數…

銀聯快捷支付的優點!

快速支付&#xff0c;又稱電子支付或第三方支付&#xff0c;在行業中得到了廣泛的應用。用戶只需通過銀行完成交易。方便快捷是指銀行可以在任何條件下支持用戶之間的轉賬、支付等即時結算服務。快速支付是指用戶可以通過手機實現銀行卡等相關操作。然而&#xff0c;現在大多數…

Java后端每日面試題(day1)

目錄 JavaWeb三大組件依賴注入的方式Autowire和Resurce有什么區別&#xff1f;Spring Boot的優點Spring IoC是什么&#xff1f;說說Spring Aop的優點Component和Bean的區別自定義注解時使用的RetentionPolicy枚舉類有哪些值&#xff1f;如何理解Spring的SPI機制&#xff1f;Spr…

聽說現在AI產品經理薪資30k起步?0基礎可以轉行AI產品嗎?

2024年&#xff0c;還有什么新風口&#xff1f; AI、元宇宙、NFT… 很多人不知道&#xff0c;其實不管是元宇宙還是NFT&#xff0c;它們本質上就是人工智能領域。 AI自身應用領域非常廣泛&#xff0c;大批高薪崗位隨之涌了出來&#xff0c;包括AI產品經理。 AI產品經歷具體工…