Change WPF Button Visibility Based On Command.CanExecute

This post shows how to set WPF button's visibility based on whether or not its bound command can execute.

Here's a quick way to change to the visibility of your WPF button based on its command status.

In the example below, there's a Button that is bound to a property named Save on view model. Save is an ICommand and the behavior of the button is to enable or disable itself based on whether or not the ICommand.CanExecute returns true or false. This sets the button's IsEnabled property, and thus we can set a binding on the button's Visibility property that changes when the button is enabled or disabled. Note that in the binding, a BooleanToVisibilityConverter is used to convert a boolean to a corresponding Visibility enum value.

<Button
    Command="{Binding Path=Save}"
    Content="Save"
    Visibility="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" />