当你将按钮的Command 属性和一个CommandBinding 实例绑定,同是也设置了ExecutedCanExecute 的处理函数,那么按钮控件将会根据CanExecute 方法的代码自动改变自己的可用性。

假设我们创建了两个按钮,给他们分别绑定 open和close命令。

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center"><Button Content="Open" Command="ApplicationCommands.Open"VerticalAlignment="Center" Padding="10,5" Margin="5"/><Button Content="Close" Command="ApplicationCommands.Close"VerticalAlignment="Center" Padding="10,5" Margin="5"/>
</StackPanel>

并为他们创建CommandBinding 实例和设置处理函数。

public MainWindow()
{this.InitializeComponent();CommandBindings.Add(new CommandBinding(ApplicationCommands.Open, Open_Executed, Open_CanExecute));CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, Close_Executed, Close_CanExecute));
}private bool isOpen = false;public void Open_Executed(object sender, ExecutedRoutedEventArgs e)
{MessageBox.Show("Open");isOpen = true;
}public void Open_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{e.CanExecute = !isOpen;
}public void Close_Executed(object sender, ExecutedRoutedEventArgs e)
{MessageBox.Show("Close");isOpen = false;
}public void Close_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{e.CanExecute = isOpen;
}


上面例子,在CanExecute中将isOpen的值赋给e.CanExecute, 按钮将会根据 isOpen的值自动变为可用或者不可用。

原文地址:https://wpf.2000things.com/2011/07/18/344-the-commandbinding-canexecute-event-determines-whether-a-button-is-enabled/

#344 – 通过CanExecute控制按钮是可用(The CommandBinding CanExecute Determines Whether a Button is Enabled)相关推荐

  1. PHP设置按钮不可用,css怎么控制按钮不可用,button按钮css样式

    css怎么控制按钮不可用CSS怎么控制按钮不可用,方法:添加"pointer-event 3360 none:"按钮元素样式,以使按钮元素永远不会成为鼠标事件的目标,并使其单击事件 ...

  2. WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chinahuyong/article/details/47395633 WinForm容器内控件批量 ...

  3. JQuer实战第一讲:验证用户名是否可用

    使用JQuery好久了,但每次都是现用现查,或者找些相关的插件.从来没系统的学习过.本身对JavaScript就有一种莫明的惧怕,虽然每次都认真的看,但有些东西总是记不住.似乎大脑就不记这些相关的东西 ...

  4. WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享

    WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享 在WinForm程序中,我们有时需要对某容器内的所有控件做批量操作.如批量判断是否允许为空?批量设置为只读.批量设置 ...

  5. WPF学习之深入浅出话命令

    WPF为我们准备了完善的命令系统,你可能会问:"有了路由事件为什么还需要命令系统呢?".事件的作用是发布.传播一些消息,消息传达到了接收者,事件的指令也就算完成了,至于如何响应事件 ...

  6. WPF(三) WPF 命令

    1.WPF 命令的概念 ​ WPF 区别于 WinForm,在继承WinForm熟悉的事件和委托技术之上,还提供了一套完善的命令(Command)系统.简单来说,命令是一个任务的完整封装,例如保存,复 ...

  7. WPF学习第九集-深入浅出话命令

    WPF为我们准备了完善的命令系统,你可能会问:"有了路由事件为什么还需要命令系统呢?".事件的作用是发布.传播一些消息,消息传达到了接收者,事件的指令也就算完成了,至于如何响应事件 ...

  8. CAD二次开发 添加按钮Ribbon

    这篇文章是教大家怎样子创建自己的Ribbon按钮界面(如下图),以下示例代码在CAD2020中运行实现. 背景 创建一个属于自己的Ribbon按钮(如下图) 理解Ribbon.Panel.Tab的关系 ...

  9. Reactive Extensions入门(5):ReactiveUI MVVM框架

    从前面几篇文章可以了解到,Rx作为LINQ的一种扩展,极大地简化了异步编程.但Rx的用法不仅如此,由于其可高的扩展性,在其他很多方面也有所应用. 在前面例子中,我们使用代码和UI界面上的元素打交道,这 ...

  10. openmv串口数据 串口助手_Qt小项目之串口助手控制LED

    前言 最近刚学了一点Qt开发上位机,尝试着做个小软件练练手.查找了很多资料,做了一个简单的串口助手,可以实现串口基本发送和接收功能,支持中文显示,还可以控制STM32开发板上的两个LED. 1.软件界 ...

最新文章

  1. activemq启动异常
  2. bootstrap评分插件 Bootstrap Star Rating Examples
  3. mysql 修改字段长度
  4. 【汇编语言与计算机系统结构笔记16】子程序设计:子程序的嵌套与递归,多个模块之间的参数传送
  5. 数据库树形结构,EasyUI Tree 树
  6. Silverlight 游戏开发小技巧:扇形排列元素
  7. NullPointerException空指针异常的理解
  8. 幂次方计算_收藏!机考计算器用法汇总,算题速度提高几倍
  9. input输入身份证验证
  10. Premiere 视频基本调色
  11. 设置idea的ant工具的代理
  12. 基于 AndroidR QCOM IMS CALL 通话流程解析
  13. LTP(Linux Test Project)学习(二)——LTP下载编译执行
  14. 动环监控设备维护与故障处理,动环监控系统调试
  15. Word目录排版,页码格式转换
  16. ttl低电平接大电阻_电路中上拉、下拉电阻的作用及原理
  17. 帕斯卡公式+Lucas定理______DP?( hdu 3944 )
  18. 含论文+辩论PPT+源码等]微信小程序ssm社区心理健康服务平台+后台管理系统
  19. 羊吃人,把人们赶走,
  20. 提取Exif信息中GPS经纬度,转化为double方法

热门文章

  1. 苦难是人生中必须经历的一课
  2. 前端开发工作中遇到的一些问题及解决方法
  3. 全球5G无线接入网络(RAN)行业调研及趋势分析报告
  4. 基于SSM的客房预订系统的设计与实现
  5. 思科cisco策略路由基本概念
  6. 2022-7 一套鼠标键盘控制两台及以上电脑
  7. 新西兰大学计算机,新西兰大学计算机排名
  8. 如何将自己写的项目发布到外网上
  9. Fedora 30 将默认启用 DNF-best 模式
  10. echo和narcissus寓意_【故事】三毛的英文名Echo,有什么含义?