Взаимодействие смеси выражений: Как настроить триггер для поиска значения кнопки IsEnabled? - PullRequest
1 голос
/ 16 августа 2011

Я дизайнер, использующий Expression Blend 4, и наша среда - .NET 3.5.

Эта проблема может быть простой для вас, ребята, но она вызывает у меня проблемы.

Мне нужно применить взаимодействие к кнопке, которая будет вызывать состояние, когда кнопка станет активной.

На кнопке у разработчика есть логическое значение, связанное со свойством IsEnabled. Я должен предоставить EventTrigger с именем EventName, и единственное, о чем я могу думать, это IsEnabledChanged. Однако, когда я запускаю приложение, это ничего не делает.

Как мне указать триггеру искать изменение логического значения свойства IsEnabled кнопки?

Вот код:

<Button x:Name="SaveButton"
        Command="{Binding SaveCommand}" 
        IsEnabled="{Binding IsSaveAllowedBool}">

<i:Interaction.Triggers>
   <i:EventTrigger EventName="IsEnabledChanged">
        <ic:GoToStateAction StateName="MyState"/>
   </i:EventTrigger>
</i:Interaction.Triggers>

</Button>

1 Ответ

2 голосов
/ 17 августа 2011

Я нашел решение своей проблемы.

Я обернул ContentControl вокруг элемента Border, который я пытаюсь заставить отображаться / исчезать, основываясь на логическом значении (я сделал это для того, чтобыизменить ControlTemplate - элемент Border не имеет ControlTemplate, связанного с ним)

Затем я связал свойство IsEnabled ContentControl с тем же логическим значением, которое имел разработчик.Я изменил ControlTemplate из ContentControl, чтобы Trigger срабатывал при изменении логического значения.

Вот код:

<Style x:Key="MyContentControl" TargetType="{x:Type ContentControl}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type ContentControl}">
        <ContentPresenter/>
        <ControlTemplate.Triggers>
          <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Visibility" Value="Collapsed"/>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

<ContentControl Style="{DynamicResource MyContentControl}" 
                IsEnabled="{Binding IsSaveAllowedBool}">
     <!--  ALL MY CONTENT -->
</ContentControl>

Это решение работало отлично,Просто думал, что поделюсь.

...