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界面中的元素进行操作。

时间: 2024-09-29 16:55:48

WPF--鼠标右键菜单中的Command命令实现的相关文章

将UE作为打开项加入到鼠标右键菜单中

今日重装服务器,用的是win2003的系统,安装了UE之后发现没有在鼠标右键上生成对应的打开菜单. 本人使用的是UltraEdit_16.20.0.1011_SC这个版本,这个版本在配置--文件关联中有一个选项,用这个可以集成到资源管理器上,但是选中了之后发现无效. 重装了UE也无效. 在网上找到了一个段增加鼠标右键打开项的注册表代码,修改成.reg文件之后双击导入,然后右键就有UE菜单了,测试可用. 代码如下: Windows Registry Editor Version 5.00 [HKE

将Sublime Text3添加到右键菜单中

前一段重新安装了Sublime Text3,不过一直不在右键菜单中,所以决定添加,有如下2种方法. 方法一(推荐). 把以下代码,复制到SublimeText3的安装目录,然后重命名为:sublime_addright.inf,然后右击安装就可以了. PS:重命名文件之前,需要先在工具--文件夹选项,查看中,把隐藏已知文件类型的扩展名前边的复选框不勾选. [Version] Signature="$Windows NT$" [DefaultInstall] AddReg=Sublime

如何把UltraEdit加入到系统右键菜单中

原文:如何把UltraEdit加入到系统右键菜单中 把UltraEdit加入到右键菜单中 UltraEdit安装好之后,拷贝到其它机器就可以直接使用而无需注册,但少了一个功能,就是无法选择某个文本文件用右键选择UltraEdit打开,很不方便,仔细查看注册表,发现把下面内容加入注册表即可: 方法一(.Reg文件). Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell] [HKEY_CLASSES_ROOT\*\shell

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

1 /// <summary> 2 /// 追加同目录下可执行文件到右键菜单中 3 /// 在form的Load事件中调用:new clsContextMenuStrip(this.FindForm()); 4 /// </summary> 5 public class clsContextMenuStrip 6 { 7 //窗体 8 System.Windows.Forms.Form form; 9 //右键菜单 10 System.Windows.Forms.ContextMe

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

完win7操作系统后,打完驱动在桌面右键会出现如下两个选项,平时没啥用又占用空间,那么如何删掉这两个选项呢? 操作步骤: 1.在运行中输入 regedit 确定打开注册表: 2.依次单击展开HKEY_CLASSES_ROOTDirectoryBackgroundshellexContextMenuHandlers 3.删除其中的 igfxcui 键,删完后马上生效,搞定. 上面就是Win7删除右键菜单中“图形属性”和“图形选项”的方法. 原文地址:https://www.cnblogs.com/

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

下载Editplus,发现大多是绿色版,这就导致鼠标右键快捷菜单了,使用起来不方面,上网搜集了下资料,解决方法很简单: 首先进入注册表:regedit 然后如图设置新项. 其中editplus是右键菜单显示的名字. 然后编辑command项的值. 我这里是F:\Program Files\EditPlus 3\EditPlus.exe %1 你可以设置自己的路径,绝对路径必须地,最后是空格,然后“%1”. 转:http://www.cnblogs.com/hdchild/archive/2009

windows--添加程序到右键菜单中

从网上收集的方法:win10可以使用 1.组合键win + R,输入regedit,回车 打开注册表编辑器 2.找到目录中[HKEY_CLASSES_ROOT\Directory\Background\shell]对其右键,新建一个项(新建文件夹) 并命名为:StikyNot(你也可以将此文件夹命名为"打开便笺",这个文件夹的名称就是新建的右键菜单项目的名称) 3.右键刚才新建的项[HKEY_CLASSES_ROOT\Directory\Background\shell\StikyNo

如何将软件放到右键菜单中

在桌面右键出现软件打开的快捷方式 1.在cmd中输入regedit,打开注册表 2.在HKEY_CLASSES_ROOT/Directory/Background/shell中右键新建项,名字可以是你想要的软件的名字 3.在新建的项右键再新建一个项,命名为command(必须这么命名) 4.选中command文件夹,在右侧栏中双击默认选项, 在右侧窗口的"默认"键值栏内输入记事本程序所在的路径,我的是:"D:\Microsoft VS Code\code.exe"

删除右键菜单中的Git Gui Here、Git Bash Here的方法

修改注册表的方法: 1.点击左下角开始菜单 - 运行(输入regedit)- 确定或者回车: 2.在打开的注册表中找到:HKEY_CLASSES_ROOT,并点HKEY_CLASSES_ROOT前面的小三角:找到Directory,点击前面的小三角:找到Background,点击前面的小三角:打开shell,可以看到git_gui和git_shell;删除这两项即可. 3.接下来关闭注册表,在桌面上右击鼠标就能看到Git Gui Here.Git Bash Here选项被删除啦!