wpf treeview 新增右键菜单
<TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}">
                    <EventSetter Event="TreeViewItem.PreviewMouseRightButtonDown" Handler="TreeViewItem_PreviewMouseRightButtonDown"/>
                </Style>
            </TreeView.ItemContainerStyle>
private void TreeViewItem_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            var treeViewItem = VisualUpwardSearch<TreeViewItem>(e.OriginalSource as DependencyObject) as TreeViewItem;
            if (treeViewItem != null)
            {
                treeViewItem.Focus();
                e.Handled = true;
                CreateContextMenu(treeViewItem);
            }
        }
static DependencyObject VisualUpwardSearch<T>(DependencyObject source)
        {
            while (source != null && source.GetType() != typeof(T))
                source = VisualTreeHelper.GetParent(source);
return source;
        }
private void CreateContextMenu(TreeViewItem item)
        {
            ContextMenu contextMenu = new ContextMenu();
            MenuItem menuAddItem = new MenuItem();
            menuAddItem.Header = "添加";
            menuAddItem.Click += (sender, e) =>
            {
                item.IsSelected = true;
                txtInput = new TextBoxInput();
                txtInput.Show();
                txtInput.SetTreeViewItem(CustomTreeView, item, 1);//自己的业务代码
            };
            contextMenu.Items.Add(menuAddItem);
MenuItem menuEditItem = new MenuItem();
            menuEditItem.Header = "修改";
            menuEditItem.Click += (sender, e) =>
            {
                item.IsSelected = true;
                txtInput = new TextBoxInput();
                txtInput.Show();
                txtInput.SetTreeViewItem(CustomTreeView, item, 2);//自己的业务代码
            };
            contextMenu.Items.Add(menuEditItem);
MenuItem menuDelItem = new MenuItem();
            menuDelItem.Header = "删除";
            menuDelItem.Click += (sender, e) =>
            {
                if (item != null)
                {
                    DeleteNode(item);//自己的业务代码
                }
            };
            contextMenu.Items.Add(menuDelItem);
this.CustomTreeView.ContextMenu = contextMenu;
        }
wpf treeview 新增右键菜单的更多相关文章
- WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法
		
原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 问题描述 今天发现如果我想在一个TextBlock弄一个右键菜单,并且使用Command绑定,结果发 ...
 - wpf datagrid设置右键菜单打开时选中项的背景色
		
原文:wpf datagrid设置右键菜单打开时选中项的背景色 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/artic ...
 - 在WPF中弹出右键菜单时判断鼠标是否选中该项
		
和上篇在WPF的TreeView中实现右键选定一样,这仍然是一个右键菜单的问题: 这个需求是在一个实现剪贴板的功能的时候遇到的:在弹出右键菜单时,如果菜单弹出位置在ListViewItem中时,我 ...
 - WPF 如何控制右键菜单ContextMenu的弹出
		
在具体做一些项目的时候,有时候需要需要先左键点击某个节点,然后再右键点击节点的时候才弹出右键菜单,所以直接右键点击时需要禁用掉右键菜单,这里比如我们为Grid添加了ContextMenu,但是我们需要 ...
 - WPF 之 左键弹出操作菜单,并禁用右键菜单
		
在目前的WPF版本中,很多的控件都有一个ContextMenu的属性,可以设置组件的右键菜单,这点确实是很方便,但是有些时候我们可能会需要当单击鼠标左键才弹出这个ContextMenu,而不是单击鼠标 ...
 - CentOS右键菜单添加新增文件命令
		
进入模板文件夹, 增加空白文件即可. cd /home/tom/Templatesvi text01.txt //新增一个名为text01的文本文件. :wq //保存退出. 另外可以用LibreOf ...
 - 【WPF】右键菜单ContextMenu可点击区域太小的问题
		
问题描述 正常使用右键菜单ContextMenu时,如果菜单项是不变的,可以直接在XAML中写死,如下是给一个Button按钮添加了右键菜单功能. <Button Content="T ...
 - WPF实现右键菜单
		
ContextMenu类就是用来做右键菜单的对象,对于任何的控件都可以进行对ContextMenu属性的操作进行设置右键菜单的功能. 下面代码就是对一个按钮添加一个WPF右键菜单的功能: < B ...
 - ASP.NET Boilerplate 学习    AspNet Core2 浏览器缓存使用    c#基础,单线程,跨线程访问和线程带参数   wpf 禁用启用webbroswer右键菜单   EF Core 2.0使用MsSql/MySql实现DB First和Code First   ASP.NET Core部署到Windows IIS  QRCode.js:使用 JavaScript 生成
		
ASP.NET Boilerplate 学习 1.在http://www.aspnetboilerplate.com/Templates 网站下载ABP模版 2.解压后打开解决方案,解决方案目录: ...
 - WPf 带滚动条WrapPanel 自动换行 和控件右键菜单
		
原文:WPf 带滚动条WrapPanel 自动换行 和控件右键菜单 技能点包括 WPf 样式的引用 数据的验证和绑定 比较适合初学者 前台: <Window.Resources> < ...
 
随机推荐
- C#导出Excel设置单元格样式
			
C# 导出Excel 1 //导出Excel 2 private void ExportExcel(string fileName, System.Data.DataTable myDGV, stri ...
 - Windows环境同时安装多个版本的Python解释器(python2和python3)
			
https://blog.csdn.net/qq_21583139/article/details/125881382 出现问题: 更新pip 操作后出现,pip报错,应该是升级到最新pip版本然后和 ...
 - SAP 采购订单行项目客制化字段增强
			
需求: 在采购订单行项目中新增客制化字段,区分采购的项目中的物料是量产还是研发物料 开发步骤 主要使用二代增强出口:MM06E005 创建增强项目 事务码T-code:CMOD 创建项目ZEMM001 ...
 - centos7.8GPU服务器搭建
			
首先官方文档有cuda驱动和toolkit和Linux内核本,gcc版本的对应关系,其中也有一些安装过程可参考: https://developer.nvidia.com/cuda-toolkit-a ...
 - window  0x00007b无法正常启动解决方法
			
参考链接: https://pcedu.pconline.com.cn/1570/15702605.html directx修复工具下载: https://www.onlinedown.net/sof ...
 - JavaSE——构造方法
			
package com.zhao.test3; public class Student { private String name; private int age; //如果我们自己没有写任何的构 ...
 - 【MySQL】MySQL时区问题、数据库时间相差8小时问题解决
			
解决:修改MySQL系统时区,改为东8区. 在命令行界面或者可视化工具下(如:Navicat)依次运行以下命令. 1.查询当前系统时间 select now(); 2.检查MySQL系统时区 show ...
 - chrome 检查更新时出错:无法启动更新检查(错误代码为 4: 0xA0430817 -- system level)
			
Windows系统谷歌浏览器 Chrome 检查更新时出错:无法启动更新检查(错误代码为 4: 0x80070005 -- system level)该怎么办? 这很有可能是 Chrome 更新服务被 ...
 - 打开Access时电脑出现蓝屏,错误编号0x00000116的问题解决
			
Windows7 64位旗舰版,在打开Access 2013,Onenote 2013时均会出现蓝屏,现就出现蓝屏问题解决方法给大家做一个分享. 步骤: 1.右击我的电脑,打开设备管理器 2.按顺序1 ...
 - hyper给linux扩容空间
			
1.hyper操作 (1)关机后,在设置中,查看硬盘驱动器中的虚拟磁盘及编号, (2)编辑磁盘->查找磁盘中选中刚才的编号磁盘 (3)操作时扩容(大小填的不是增量 ,是扩容以后的空间) 2.li ...