WPF 之 左键弹出操作菜单,并禁用右键菜单
在目前的WPF版本中,很多的控件都有一个ContextMenu的属性,可以设置组件的右键菜单,这点确实是很方便,但是有些时候我们可能会需要当单击鼠标左键才弹出这个ContextMenu,而不是单击鼠标右键(即:当单击鼠标右键的时候不弹出该ContextMenu),这样我们就能很方便的实现类似Flex中设置弹出式菜单的效果。
1、在前台加入一个带菜单的Button,如下:
<Button Name="btnMenu" Width="50" Height="25" Content="菜单" Initialized="btnMenu_Initialized"> <Button.ContextMenu> <ContextMenu Name="contextMenu"> <MenuItem Header="复制"/> <MenuItem Header="粘贴"/> <MenuItem Header="剪切"/> <MenuItem Header="删除"/> </ContextMenu> </Button.ContextMenu> </Button>
2、在后台,实现Initialized="btnMenu_Initialized",初始化右键菜单为null:
private void btnMenu_Initialized(object sender, EventArgs e) { //设置右键菜单为null this.btnMenu.ContextMenu = null; }
3、设置单击鼠标左键弹出菜单,如下:
private void btnMenu_Click(object sender, RoutedEventArgs e) { //目标 this.contextMenu.PlacementTarget = this.btnMenu; //位置 this.contextMenu.Placement = PlacementMode.Top; //显示菜单 this.contextMenu.IsOpen = true; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构