2012-02-19 71 views
5

我注意到下面的代码:绑定命令时绑定IsEnabled是否可选?

<Button Content="_Timbres..." 
    Command="{Binding Path=ShowTimbresCommand}" 
    IsEnabled="{Binding Path=CanExecuteShowTimbresCommand}"/> 

同样表现为:

<Button Content="_Timbres..." 
    Command="{Binding Path=ShowTimbresCommand}"> 

意思就是说CanExecuteShowTimbresCommand自动绑定到IsEnabled属性。 这是真的吗?为什么?

回答

10

通常控制其接受Command将设置IsEnabledfalse如果命令的CanExecutefalse,这一切就是这么简单。

MSDN

命令的另一个目的是指示动作是否可用。 [...]一个按钮可以订阅CanExecuteChanged事件,如果CanExecute返回false将被禁用,或者如果CanExecute返回true则被禁用。

+0

谢谢...这意味着我可以删除大量的XAML代码。 – 2012-02-19 03:10:41

+1

@MichelKeijzers:如果你到目前为止总是亲自处理'IsEnabled',那确实是这样。 – 2012-02-19 03:12:04

+0

是的,我目前在任何地方都有一个与IsEnabled = CanExecute相同的命令绑定在一起的命令。我假设你在答案中做的额外编辑是自动完成的。 – 2012-02-19 03:15:10