c# - Button.CommandBindings 中的多个命令
问题描述
<Button.CommandBindings>
<CommandBinding Command="{x:Static materialdesign:DrawerHost.OpenDrawerCommand}"/>
<CommandBinding Command="{Binding MyCommand}"/>
</Button.CommandBindings>
我试图在单击按钮时触发 2 个不同的命令。一个是从我正在使用的 UI 库中设置的,另一个是我的。
我收到以下错误:
不能在“CommandBinding”类型的“Command”属性上设置“Binding”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”。
有人知道如何实现这一目标吗?Xaml 甚至允许吗?
解决方案
我会这样做:
- 创建一个
ICommand
包含命令条目列表的对象实现。然后该对象只是在方法中按顺序调用所有命令Execute
。 - 绑定
Button.Command
到此类的一个实例。
例如 XAML
<Button.Command>
<CommandList>
<CommandEntry Command="{x:Static ...}"/>
<CommandEntry Command="{Binding ...}"/>
</CommandList>
</Button.Command>
CommandEntry
需要是一个DependencyObject
并且Command
需要是一个依赖属性来支持绑定。
推荐阅读
- ejs - 如何阻止 csslint 和 jshint 在 Atom 中对我的 EJS 进行 linting?
- openstack - Openstack HEAT:通过 HEAT 模板手动将新实例添加到现有堆栈
- python - python - 列出熊猫数据框
- android - 如何使底部导航栏可见?
- php - PHP中变量周围的括号有什么作用?
- python - Discord Python - 如何让 BOT 说出频道的所有消息?
- firebase - Firebase“.write”规则在模拟器中无法按预期工作
- node.js - NodeJS - 摩根立即选项默认值
- php - 对讲 API CURL 出现错误“代码”:“400”,“消息”:“必须提供用户电子邮件、用户 ID 或匿名 ID”
- c# - 将不带引号的 csv 字符串转换为带引号的 csv 字符串