一个功能,在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. Android中的内容提供者

    Android中的内容提供者 为什么需要内容提供者 为了跨程序访问数据.试想如果在App-1中创建了一个私有数据库,App-2是不能直接访问的.因为权限不够,虽然可以使用chmod 777来修改权限, ...

  2. mybatis example使用 and和or联合查询(转)

    这两天项目用到ibatis,碰到and or的联合查询,语句像这样的 select * from table where xxx = "xxx" and (xx1="xx ...

  3. Dapper入门教程(三)——Dapper Query查询

    介绍 查询方法(Query)是IDbConnection的扩展方法,它可以用来执行查询(select)并映射结果到C#实体(Model.Entity)类 查询结果可以映射成如下类型: Anonymou ...

  4. centos7用户,组及文件权限管理

    centos7安装过程中如果没有创建用户的话,默认只有ROOT用户,这个用户是具有最高权限的帐户,可以做任何事情,但实际生产环境中我们一般不会使用这个用户,因为权限太大了,很危险. 所以在生产环境中就 ...

  5. 安徽省2016“京胜杯”程序设计大赛_I_恶魔A+B

    恶魔A+B Time Limit: 1000 MS Memory Limit: 65536 KB Total Submissions: 73 Accepted: 17 Description 相信大家 ...

  6. 从入门到放弃,.net构建博客系统(一):系统构建篇

    demo:http://tonyblogs.top/ Git源码:https://github.com/Halifa/TonyBlogs 项目采用的技术有:asp.net mvc4 + autofac ...

  7. ES6 浅谈let与const 块级作用域之封闭空间(闭包)

    ES6新增了 let const 命令,用来声明变量.它的用法类似于 var  ,但是所声明的变量,只在 let const 命令所在的代码块内有效.  var const 不允许重复声明 用处: 可 ...

  8. 关于socket通信bind()返回值错误:10049

    这个问题,我差点和客户吵起来了.我的电脑确实没有问题,客户电脑却会经常出现,.今天查了下,居然是这种问题,大意了,在这里记录下. 服务器端程序开启的时候总是提示:bind错误,用WSAGetLastE ...

  9. shell 编程之 if...else case...esac

    shell的条件判断语句有三种 if...fi  语句 if...else...fi  语句 if...elif...fi  语句 例子: a=10; b=20; if [ $a -gt %b ] t ...

  10. Oracle Test 日志

    这是一个在本地写日志的软件,写一篇看看效果怎么样. 我主要想看看这个行间距ok不... 看看效果...