Вместо отключения кнопки, которая происходит автоматически, я хотел бы скрыть (или, скорее, скрыть видимость) кнопку.
Как скрыть кнопку, связанную с командой, которая не может выполнить?
Ответ 1
Вы можете использовать стиль и триггеры, считая, что команда отвечает за настройку кнопки enabled/disabled:
<Button x:Name="btnMoveUp"
Command="{x:Static local:Window1.MoveItemUp}">
<Button.Style>
<Style TargetType="{x:Type Button}" >
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Обратите внимание, что вы можете определить этот стиль в более высокой области и поделиться им - я просто поместил это правильно с помощью кнопки для более сжатого примера.
Ответ 2
То же поведение без стиля и триггера, если свойство Visibility еще не связано.
Command={Binding MyCommand}
Visibility="{Binding RelativeSource={RelativeSource Self}, Path=IsEnabled, Converter={StaticResource BTVC}}"
Где BTVC - это BooleanToVisibilityConverter (это должно быть).
Ответ 3
Используйте BooleanToVisibilityConverter
и привяжите к bool как описанный здесь.