Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is binding IsEnabled optional when binding Command?

I noticed that the following code:

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

behaves equally as:

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

Meaning that the CanExecuteShowTimbresCommand is automatically bound to the IsEnabled property. Is that true and why?

like image 514
Michel Keijzers Avatar asked Feb 19 '12 03:02

Michel Keijzers


1 Answers

Usually controls which accept a Command will set IsEnabled to false if the command's CanExecute is false, that's all there is to it.

MSDN:

Another purpose of commands is to indicate whether an action is available. [...] A button can subscribe to the CanExecuteChanged event and be disabled if CanExecute returns false or be enabled if CanExecute returns true.

like image 91
H.B. Avatar answered Nov 19 '22 18:11

H.B.