2016-07-11 5 views
0

Я пытаюсь изменить фон кнопки, но проблема в том, что она состоит из трех состояний: IsEnabled, IsPressed и Clicked. В состоянии по умолчанию, когда я нажимаю кнопку, фон меняется, а затем, когда я нажимаю кнопку, кнопка анимируется, но в следующий раз, когда я нажимаю кнопку, фон не изменяется, но щелчок (анимация) работает правильно, так как есть конфликт при смене аналогичного ресурса.Как разрешить конфликты свойств в WPF при использовании триггеров?

Вот мой исходный код

<Style TargetType="{x:Type Button}" x:Key="myButton"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Border Name="myBorder" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
         <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Name="Stack" Background="DarkGray"> 
          <Image x:Name="checkBoxImage" Width="40" Height="40" Source="NextPage.png"/> 
         </StackPanel> 
       </Border> 
       <ControlTemplate.Triggers> 
        <EventTrigger RoutedEvent="Click"> 
         <BeginStoryboard> 
          <Storyboard> 
           <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Stack" Storyboard.TargetProperty="Background"> 
            <ObjectAnimationUsingKeyFrames.KeyFrames> 
             <DiscreteObjectKeyFrame Value="Blue1" KeyTime="0" /> 
             <DiscreteObjectKeyFrame Value="DarkGray1" KeyTime="0:0:0.4" /> 
            </ObjectAnimationUsingKeyFrames.KeyFrames> 
           </ObjectAnimationUsingKeyFrames> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
        <Trigger Property="IsPressed" Value="True"> 
         <Setter TargetName="Stack" Property="Background" Value="Red" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

ответ

1

Это выглядит как вопрос старшинства. Анимации имеют приоритет над значениями, заданными триггером. Вы можете либо заменить установщик триггера анимациями, добавленными в Enter/ExitActions, либо попытаться использовать visual states и управлять переходами таким образом (что, вероятно, работает лучше, потому что вы действительно не знаете, что должно было бы оживить ExitAction во всех случаях).

 Смежные вопросы

  • Нет связанных вопросов^_^