博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wpf Command
阅读量:4979 次
发布时间:2019-06-12

本文共 1881 字,大约阅读时间需要 6 分钟。

//基本的ICommand
public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();            clearCmd clcmd = new clearCmd(tb);            bt.Command = clcmd;                  }        public class clearCmd : ICommand    {        TextBox data;        public clearCmd(TextBox o)        {            data = o;        }        public event EventHandler CanExecuteChanged        {            add { CommandManager.RequerySuggested += value; }            remove { CommandManager.RequerySuggested -= value; }        }        public bool CanExecute(object parameter)        {            return !string.IsNullOrEmpty(data.Text);        }        public void Execute(object parameter)        {            data.Clear();        }    }
//路由命令RoutedCommand,本身不包含CanExecute和Executed实际执行逻辑,而是引发逻辑树遍历,查找绑定了了该路由命令的CommandBinding,由CommandBinding实际执行CanExecute和Executed。
public partial class MainWindow : Window    {        private RoutedCommand clearCmd = new RoutedCommand("Clear", typeof(MainWindow));        public MainWindow()        {            InitializeComponent();            bt.Command = clearCmd;            clearCmd.InputGestures.Add(new KeyGesture(Key.C, ModifierKeys.Alt)); //这是为命令增加快捷键            bt.CommandTarget = tb;//这里为逻辑树遍历起点            CommandBinding cb = new CommandBinding();            cb.Command = clearCmd;            cb.CanExecute += Cb_CanExecute;            cb.Executed += Cb_Executed;            this.CommandBindings.Add(cb);        }        private void Cb_Executed(object sender, ExecutedRoutedEventArgs e)        {            tb.Text = "";            e.Handled = true;        }        private void Cb_CanExecute(object sender, CanExecuteRoutedEventArgs e)        {            e.CanExecute = !string.IsNullOrEmpty(tb.Text);            e.Handled = true;        }    }

 

 

 

转载于:https://www.cnblogs.com/TianPing/p/9716757.html

你可能感兴趣的文章
Arch Linux 硬盘引导-联网安装
查看>>
无法打开包括文件: “QWidgets”: No such file or directory
查看>>
iOS 封装AFNetworking请求数据
查看>>
20个非常有用的Java程序片段
查看>>
Android 3D 游戏学习笔记(5)-法向量及材质
查看>>
Python:GUI
查看>>
js完美拖拽封装及其案例
查看>>
"setItem@[native code] logging run flush"
查看>>
产品设计的经验分享
查看>>
IIS Media Service: Channel 小结
查看>>
安全防护与配置
查看>>
ANDROID SHAPE画圆形背景_ANDROID实现角标布局
查看>>
[Computer Netword] Tcp Udp 区别
查看>>
获取上一行记录lag
查看>>
配置ftp服务器
查看>>
【面试】二维数组中找数字
查看>>
在eclipse启动tomcat时遇到超时45秒问题的解决方法
查看>>
iReport报表的简单函数及部分操作
查看>>
bean 解析、注册、实例化流程源码剖析
查看>>
压缩、解压缩及归档工具
查看>>