Взаимодействие Expression Blend: как настроить триггер для поиска значения IsEnabled кнопки?

Я дизайнер, использующий 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>

person PhillipKregg    schedule 16.08.2011    source источник


Ответы (1)


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

Я обернул 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>

Это решение сработало отлично. Просто решил поделиться.

person PhillipKregg    schedule 17.08.2011