2009-11-30 89 views
0

我建立一个自定义的splitbutton是由两个重叠的按钮和弹出 - 像这样(图片展示了一些通用splitbutton):WPF:如何使绑定命令无法执行时启用按钮(splitbutton)?

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

我SplitButton打开弹出焕右侧箭头点击,并在单击主按钮时执行SplitButton.Command。

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

我已经完成它,但问题是这样的:

  • 的SplitButton从切换按钮
  • 在ControlTemplate中
  • 子类,我有一个切换按钮(底部的一个),和按钮(短,重叠的在顶部)
  • Button.Command="{TemplateBinding Command}"(所以我可以做<SplitButton Command="{Binding MyDefaultAction}">...
  • 问题:当一个命令无法执行,整个SplitButton被禁用。

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

谢谢!

回答

0

命令是一个依赖项属性,我敢肯定它是由它下面的可视树中的任何控件继承。因此,对于不想禁用的按钮,将命令属性设置为不同的命令或将其设置为空也可以。

另外,

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

Dependency Propert

+0

好了,问题是,我仍然希望按钮执行给定的命令,我只是不要”当命令不能执行时,不希望它被禁用。然而,我看着ButtonBase中的实现(使用Reflector),并且通过私有方法禁用按钮 - 所以我不能覆盖它们。 我可能需要从Reflector的反汇编视图中剔除所需的功能,并创建一个ICommand DP,它将在我的控制之下。感谢这个想法。 – 2009-11-30 03:12:08