2016-07-11 3 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의 애니메이션이 무엇인지 잘 모르기 때문에 더 효과적 일 수 있습니다.)

관련 문제