Свойство IsEnabled у Button я привязываю к свойству своего класса булевского типа IsChecked. Но я хочу, чтобы кнопка была доступна для нажатия, когда свойство IsChecked = false. Для этого я перед свойством IsChecked добавляю знак отрицания. Кнопка становится доступной, так как начальное значение IsChecked = false, при нажатии же это значение меняется на true, но при этом кнопка все равно остается доступной для нажатия. В чем проблема? Почему свойство IsEnabled не меняется при изменении свойства IsChecked?
<Button
Command="{Binding Activate}"
Width="25"
Height="25"
IsEnabled="{Binding !IsChecked }"/>
Вы не можете использовать оператор ! в привязке. Вместо этого вам нужно определить конвертер значений или использовать триггер данных (DataTrigger):
<Style x:Key="notEnabled" TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked}" Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked}" Value="False">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
и
<Button
Command="{Binding Activate}"
Style="{StaticResource notEnabled}" />
Сборка персонального компьютера от Artline: умный выбор для современных пользователей