WPF--鼠标右键菜单中的Command命令实现
一个功能,在ListView中的ListBoxItem控件上实现右键菜单关闭选项,将该ListBoxItem从ListView中删除。
利用 RoutedCommand类创建Command命令,MSDN上将其定义为一个实现 ICommand 并在元素树之内进行路由的命令。
C#代码:
private RoutedCommand closeCmd = new RoutedCommand("Clear", typeof(MainWindow));
private void ListBoxItem_MouseRightButtonUp(object sender,MouseButtonEventArgs e)
{
ListBoxItem data = new ListBoxItem();
data = (ListBoxItem)sender;
MenuItem close = new MenuItem();
close.Header = "删除";
//声明Mycommand实例
close.Command = closeCmd;
closeCmd.InputGestures.Add(new KeyGesture(Key.D, ModifierKeys.Alt)); //添加快捷键
close.CommandTarget = data; //命令作用目标
CommandBinding cb = new CommandBinding();
cb.Command = closeCmd;
cb.CanExecute += cb_CanExecute;
cb.Executed += cb_Executed;
data.CommandBindings.Add(cb);
data.ContextMenu = new ContextMenu();
data.ContextMenu.Items.Add(close);
data.ContextMenu.IsOpen = true;
}
private void cb_Executed(object sender, ExecutedRoutedEventArgs e)
{
ListBoxItem obj =(ListBoxItem)sender;
this.listView.Items.Remove(obj);
e.Handled = true;
}
private void cb_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
e.Handled = true;
}
Command的其他实现方式可根据情况选择使用,这种实现方式方便于对UI界面中的元素进行操作。
WPF--鼠标右键菜单中的Command命令实现的更多相关文章
- 将Sublime Text3添加到右键菜单中
卸载了Sublime Text2,安装了最新版本的Sublime Text3,不过一直不在右键菜单中,每次使用都需要从打开方式中选,所以决定添加,有如下2种方法. 添加到右键菜单 方法一(推荐) 在S ...
- Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口”
Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口” Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directo ...
- Win7删除右键菜单中“图形属性”和“图形选项”
完win7操作系统后,打完驱动在桌面右键会出现如下两个选项,平时没啥用又占用空间,那么如何删掉这两个选项呢? 操作步骤: 1.在运行中输入 regedit 确定打开注册表: 2.依次单击展开HKEY_ ...
- 添加鼠标右键菜单项(EditPlus为例)
下载Editplus,发现大多是绿色版,这就导致鼠标右键快捷菜单了,使用起来不方面,上网搜集了下资料,解决方法很简单: 首先进入注册表:regedit 然后如图设置新项. 其中editplus是右键菜 ...
- 鼠标右键添加"在此处打开命令窗口"
从windows7开始,提供了一个便于从当前文件夹打开cmd命令行窗口的快捷方式: 直接使用 Shift+鼠标右键==>“在此处打开命令行窗口” 有可能以后会遇到的问题,可参考如下.. htt ...
- 自定义右键菜单中bug记录
今天客服部提出一个Bug,拖动滚动条到底部右键表格下方的数据,然后点击拨打电话打出的是表格上面的号码,看了下代码发现bug的原因是因为获取表格中电话号码的方式是通过给tr绑定了mouseover事件, ...
- 将程序sublime添加到右键菜单中
新建wangzhaobo.bat复制一下代码, 粘贴保存,然后打开. @echo Off :START CLS echo *====================================== ...
- UltraEdit加入到右键菜单中
http://www.cppblog.com/prayer/archive/2009/02/20/74429.htmlUltraEdit安装好之后,拷贝到其它机器就可以直接使用而无需注册,但少了一个功 ...
- winform自动添加同级目录下可执行文件的快捷方式到右键菜单中
/// <summary> /// 追加同目录下可执行文件到右键菜单中 /// 在form的Load事件中调用:new clsContextMenuStrip(this.FindForm( ...
随机推荐
- java_final修饰符
1.修饰变量时,表示该变量一旦获得初始值就不可改变 final修饰的成员变量必须由程序员显示地指定初始值,系统不会进行隐式初始化 类变量:必须在初始化块中指定初始值或声明该类变量时指定初始值 实例变量 ...
- JavaScript获取客户端IP地址
1. 第三方接口 1) 这里提供一个搜狐接口的地址:http://pv.sohu.com/cityjson?ie=utf-8 ,将这个js引入到页面即可得到returnCitySN. 2) api.i ...
- python8 字符串操作
name = "my name is {name} and i am {year} old" print(name.capitalize()) print(name.count(& ...
- [技术]浅谈OI中矩阵快速幂的用法
前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...
- js判断移动终端(手机浏览器)
方法1: <script type="text/javascript"> var browser = { versions: f ...
- [STL] day 1~2 Problem Set
Q#1 #include <cmath> #include <cstdio> #include <vector> #include <iostream> ...
- centos7安装mysql(yum)
centos7安装mysql(yum) ----安装环境----依赖安装----检查mysql是否已安装----安装----验证是否添加成功----选择要启用的mysql版本----通过Yum安装my ...
- 使用xlrd模块从excel文件中导入数据
- MyEclipse去除网上复制下来的代码带有的行号
正则表达式去除代码行号 作为开发人员,我们经常从网上复制一些代码,有些时候复制的代码前面是带有行号,如: MyEclipse本身自带有查找替换功能,并且支持正则表达式替换,使用正则替换就可以很容易去除 ...
- 不受控制的 position:fixed
本文为纯理论文章,没有 Demo,没有配图,可能会略微枯燥. 大家都知道,position:fixed 在日常的页面布局中非常常用,在许多布局中起到了关键的作用.它的作用是: position:fix ...