2009-10-28 8 views
4

현재 각 트리거가 동일한 애니메이션을 수행 할 수 있도록 트리거를 설정하려는 버튼이 있습니다. XAML 의 XAML에 대상을 스토리 보드에 '전달'하여 각 대상에 대해 스토리 보드를 다시 작성할 필요가 없습니까?WPF XAML에서 스토리 보드 대상 설정

답변

14

명시 적 대상을 설정하지 않은 경우 대상은 애니메이션이 적용되는 요소가되어야합니다. 방아쇠/애니메이션으로 스타일을 정의하고이 비헤이비어를 표시하려는 특정 버튼에 스타일을 적용합니다. 예를 들면 :

<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}"> 
    <Style.Resources> 
     <Storyboard x:Key="OnMouseEnterStoryboard"> 
      <DoubleAnimation BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" To="180" /> 
     </Storyboard> 
     <Storyboard x:Key="OnMouseLeaveStoryboard"> 
      <DoubleAnimation BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" To="0" /> 
     </Storyboard> 
    </Style.Resources> 
    <Style.Triggers> 
     <EventTrigger RoutedEvent="Mouse.MouseLeave"> 
      <RemoveStoryboard BeginStoryboardName="OnMouseEnterStoryboard_BeginStoryboard"/> 
      <BeginStoryboard x:Name="OnMouseLeaveStoryboard_BeginStoryboard" Storyboard="{StaticResource OnMouseLeaveStoryboard}"/> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="Mouse.MouseEnter"> 
      <BeginStoryboard x:Name="OnMouseEnterStoryboard_BeginStoryboard" Storyboard="{StaticResource OnMouseEnterStoryboard}"/> 
      <RemoveStoryboard BeginStoryboardName="OnMouseLeaveStoryboard_BeginStoryboard"/> 
     </EventTrigger> 
    </Style.Triggers> 
    <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/> 
    <Setter Property="RenderTransform"> 
     <Setter.Value> 
      <RotateTransform/> 
     </Setter.Value> 
    </Setter> 
</Style> 

그리고 당신이 이런 식으로 행동 할 각 버튼 :

<Button Style="{StaticResource MyButtonStyle}" ... /> 
+1

최고를! 나는 방금 WPF를 배우기 시작했고 연관된 트리거와 애니메이션으로 스타일을 적용하는 것을 생각하지 않았습니다. 도와 주셔서 감사합니다! – jwarzech

관련 문제