WPF:如何在绑定命令无法执行时启用按钮(splitbutton)?

时间:2009-11-30 00:38:31

标签: wpf button icommand commandbinding split-button

我正在构建一个自定义的分割按钮,它由两个重叠的按钮和弹出窗口组成 - 就像这样(图像显示了一些通用的分割按钮):

SplitButton http://windowsclient.net/wf/blogs/jfoscoding/splitbutton.PNG

我的SplitButton打开弹出窗口,右侧带箭头,单击主按钮时执行SplitButton.Command。

在我的情况下,有时默认操作无法执行,在这种情况下,当单击一个主按钮时,我想打开弹出窗口。

我已经完成了,但问题是:

  • SplitButton是ToggleButton
  • 的子类
  • 在ControlTemplate中,我有一个ToggleButton(底部的一个)和Button(更短,覆盖在顶部)
  • Button.Command="{TemplateBinding Command}"(所以我可以<SplitButton Command="{Binding MyDefaultAction}">...
  • 问题:当命令无法执行时,整个SplitButton都会被禁用。

我想继续使用相同的命令,但要覆盖按钮的行为,以便在Command.CanExecute()返回false时不会禁用它。我怎么能这样做?

谢谢!

1 个答案:

答案 0 :(得分:0)

Command是一个依赖属性,我很确定它在可视树中由它下面的任何控件继承。因此,对于您不希望禁用的按钮,将command属性设置为其他命令或将其设置为null也可以正常工作。

可替换地,

创建自己的依赖属性...就像这个

Dependency Propert