首页 > 解决方案 > 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 甚至允许吗?

标签: c#wpfxamlmaterial-design-in-xaml

解决方案


我会这样做:

  • 创建一个ICommand包含命令条目列表的对象实现。然后该对象只是在方法中按顺序调用所有命令Execute
  • 绑定Button.Command到此类的一个实例。

例如 XAML

<Button.Command>
    <CommandList>
         <CommandEntry Command="{x:Static ...}"/>
         <CommandEntry Command="{Binding ...}"/>
    </CommandList>
</Button.Command>

CommandEntry需要是一个DependencyObject并且Command需要是一个依赖属性来支持绑定。


推荐阅读