2012-11-17 3 views
0

저는 WPF를 처음 접했고 어쩌면 어리석은 질문이 있습니다.동일한 애니메이션, WPF로 하나씩 다른 버튼에 애니메이션을 적용하는 방법

하나의 애니메이션을 클릭하고 애니메이션 만 가져 오는 경우 동일한 애니메이션 (360도 회전)으로 4 개의 버튼을 애니메이션하려고합니다.

<Window.Resources> 
    <Storyboard x:Key="Storyboard" BeginTime="00:00:00" Duration="00:00:10"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rotButton" Storyboard.TargetProperty="(RotateTransform.Angle)"> 
      <SplineDoubleKeyFrame KeyTime="0:0:00.0" Value="0.0" /> 
      <SplineDoubleKeyFrame KeyTime="0:0:01.0" Value="360.0" /> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 

</Window.Resources> 

을 그리고 rotButton 여기에 첫 번째 버튼에 정의되어 있습니다 :

<Button Click="Button_Click"> 
      <StackPanel> 
       <Image Source="open.png" Height="46" Width="48" /> 
      </StackPanel> 
      <Button.RenderTransform> 
       <TransformGroup> 
        <RotateTransform x:Name="rotButton" Angle="0" CenterX="25" CenterY="25" /> 
        <ScaleTransform x:Name="scaButton" ScaleX="1" ScaleY="1" CenterX="50" CenterY="25" /> 
       </TransformGroup> 
      </Button.RenderTransform> 
      <Button.Triggers> 
       <EventTrigger RoutedEvent="Button.Click"> 
        <BeginStoryboard Storyboard="{StaticResource Storyboard}" /> 
       </EventTrigger> 
      </Button.Triggers> 
     </Button> 

가 어떻게 다른 모든 버튼에이 코드를 사용하여 "일반 수 있습니다 여기에

는 내가 지금까지 무엇을 가지고 "모든 버튼에 대해 Button.RenderTransform? 3 개의 스토리 보드를 만들고 각 버튼에 rotButton1, rotButton2 등을 사용하는 더 똑똑한 방법이 있어야합니다.

당신이 당신의 버튼의 스타일을 만들 경우, 당신은 버튼의 각 인스턴스에 대한으로 RenderTransform을 설정하는 세터를 사용할 수 있습니다

답변

1

감사를 나는 바란다는 의미가 올바른 방향 :) 날 지점 그 스타일을 사용합니다. 또한 스타일에는 트리거가있을 수 있습니다.

비결은 예 내가 알고 있지만 정확히 어떻게 해야할지 모르겠다 올바른 경로 구문 http://blogs.charteris.com/blogs/patl-closed/archive/2007/03/20/Complex-PropertyPath-syntax.aspx

<Window.Resources> 
    <TransformGroup x:Key="transformGroup"> 
     <RotateTransform Angle="0" CenterX="25" CenterY="25" /> 
     <ScaleTransform ScaleX="1" ScaleY="1" CenterX="50" CenterY="25" /> 
    </TransformGroup> 
    <Style x:Key="MyButtonStyle" TargetType="{x:Type Button}"> 
     <Setter Property="RenderTransform" Value="{StaticResource transformGroup}"/> 
     <Style.Triggers> 
      <EventTrigger RoutedEvent="Button.Click"> 
       <BeginStoryboard> 
        <Storyboard BeginTime="00:00:00" Duration="00:00:10"> 
         <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Button.RenderTransform).(TransformGroup.Children)[0].(RotateTransform.Angle)"> 
          <SplineDoubleKeyFrame KeyTime="0:0:00.0" Value="0.0" /> 
          <SplineDoubleKeyFrame KeyTime="0:0:01.0" Value="360.0" /> 
         </DoubleAnimationUsingKeyFrames> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<Grid> 
    <StackPanel> 
     <Button Style="{StaticResource MyButtonStyle}"/> 
     <Button Style="{StaticResource MyButtonStyle}"/>   
    </StackPanel> 
</Grid> 
+0

입니다 .. 좋은 예를 찾을 수 없습니다. 너 몇장있어? – Pepys

+0

애니메이션 날 만들었습니다 – user1834059

+0

바로 그 자리에;) 많이 고마워 .. 그리고 네, 그건 바보 같은 애니메이션이지만 그게 내 첫 번째 생각이었다. 고맙습니다 – Pepys

관련 문제