一个功能,在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命令实现的更多相关文章

  1. 将Sublime Text3添加到右键菜单中

    卸载了Sublime Text2,安装了最新版本的Sublime Text3,不过一直不在右键菜单中,每次使用都需要从打开方式中选,所以决定添加,有如下2种方法. 添加到右键菜单 方法一(推荐) 在S ...

  2. Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口”

    Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口” Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directo ...

  3. Win7删除右键菜单中“图形属性”和“图形选项”

    完win7操作系统后,打完驱动在桌面右键会出现如下两个选项,平时没啥用又占用空间,那么如何删掉这两个选项呢? 操作步骤: 1.在运行中输入 regedit 确定打开注册表: 2.依次单击展开HKEY_ ...

  4. 添加鼠标右键菜单项(EditPlus为例)

    下载Editplus,发现大多是绿色版,这就导致鼠标右键快捷菜单了,使用起来不方面,上网搜集了下资料,解决方法很简单: 首先进入注册表:regedit 然后如图设置新项. 其中editplus是右键菜 ...

  5. 鼠标右键添加"在此处打开命令窗口"

    从windows7开始,提供了一个便于从当前文件夹打开cmd命令行窗口的快捷方式: 直接使用  Shift+鼠标右键==>“在此处打开命令行窗口” 有可能以后会遇到的问题,可参考如下.. htt ...

  6. 自定义右键菜单中bug记录

    今天客服部提出一个Bug,拖动滚动条到底部右键表格下方的数据,然后点击拨打电话打出的是表格上面的号码,看了下代码发现bug的原因是因为获取表格中电话号码的方式是通过给tr绑定了mouseover事件, ...

  7. 将程序sublime添加到右键菜单中

    新建wangzhaobo.bat复制一下代码, 粘贴保存,然后打开. @echo Off :START CLS echo *====================================== ...

  8. UltraEdit加入到右键菜单中

    http://www.cppblog.com/prayer/archive/2009/02/20/74429.htmlUltraEdit安装好之后,拷贝到其它机器就可以直接使用而无需注册,但少了一个功 ...

  9. winform自动添加同级目录下可执行文件的快捷方式到右键菜单中

    /// <summary> /// 追加同目录下可执行文件到右键菜单中 /// 在form的Load事件中调用:new clsContextMenuStrip(this.FindForm( ...

随机推荐

  1. java_final修饰符

    1.修饰变量时,表示该变量一旦获得初始值就不可改变 final修饰的成员变量必须由程序员显示地指定初始值,系统不会进行隐式初始化 类变量:必须在初始化块中指定初始值或声明该类变量时指定初始值 实例变量 ...

  2. JavaScript获取客户端IP地址

    1. 第三方接口 1) 这里提供一个搜狐接口的地址:http://pv.sohu.com/cityjson?ie=utf-8 ,将这个js引入到页面即可得到returnCitySN. 2) api.i ...

  3. python8 字符串操作

    name = "my name is {name} and i am {year} old" print(name.capitalize()) print(name.count(& ...

  4. [技术]浅谈OI中矩阵快速幂的用法

    前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...

  5. js判断移动终端(手机浏览器)

    方法1: <script type="text/javascript">         var browser = {             versions: f ...

  6. [STL] day 1~2 Problem Set

    Q#1 #include <cmath> #include <cstdio> #include <vector> #include <iostream> ...

  7. centos7安装mysql(yum)

    centos7安装mysql(yum) ----安装环境----依赖安装----检查mysql是否已安装----安装----验证是否添加成功----选择要启用的mysql版本----通过Yum安装my ...

  8. 使用xlrd模块从excel文件中导入数据

  9. MyEclipse去除网上复制下来的代码带有的行号

    正则表达式去除代码行号 作为开发人员,我们经常从网上复制一些代码,有些时候复制的代码前面是带有行号,如: MyEclipse本身自带有查找替换功能,并且支持正则表达式替换,使用正则替换就可以很容易去除 ...

  10. 不受控制的 position:fixed

    本文为纯理论文章,没有 Demo,没有配图,可能会略微枯燥. 大家都知道,position:fixed 在日常的页面布局中非常常用,在许多布局中起到了关键的作用.它的作用是: position:fix ...