Свойство IsEnabled у Button

384
06 февраля 2017, 14:38

Свойство IsEnabled у Button я привязываю к свойству своего класса булевского типа IsChecked. Но я хочу, чтобы кнопка была доступна для нажатия, когда свойство IsChecked = false. Для этого я перед свойством IsChecked добавляю знак отрицания. Кнопка становится доступной, так как начальное значение IsChecked = false, при нажатии же это значение меняется на true, но при этом кнопка все равно остается доступной для нажатия. В чем проблема? Почему свойство IsEnabled не меняется при изменении свойства IsChecked?

  <Button
          Command="{Binding Activate}" 
          Width="25" 
          Height="25"
          IsEnabled="{Binding !IsChecked }"/>
Answer 1

Вы не можете использовать оператор ! в привязке. Вместо этого вам нужно определить конвертер значений или использовать триггер данных (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}" />
READ ALSO
Как создать картинку, если ее размер заранее неизвестен?

Как создать картинку, если ее размер заранее неизвестен?

Задача - штамповать разные изображения на полотноВот только размер полотна заранее неизвестен

325
Как встроить 7z.dll в exe?

Как встроить 7z.dll в exe?

argsName Почему-то содержит = "Project_file_backup

431
Модульное тестирование в C#

Модульное тестирование в C#

Как правильно протестировать Data access layer с помощью Mock, а именно репозитории, предоставляющие доступ к базе данных через контекст?

378