2010-03-16 3 views

답변

2

EventTrigger를 사용하여이 작업을 수행 할 수 있습니다.

단추와 애니메이션 대상의 컨테이너의 FrameworkElement.Triggers 속성에서 트리거를 정의 할 수 있습니다. 당신의 목표에 상대 경로가있는 경우

<StackPanel 
     Orientation="Horizontal"> 

     <StackPanel.Triggers> 

      <EventTrigger 
       SourceName="TheButton" 
       RoutedEvent="Button.Click"> 

       <BeginStoryboard> 
        <Storyboard> 
         <ColorAnimation 
          Storyboard.TargetName="LimeRect" 
          Storyboard.TargetProperty="Fill.Color" 
          To="Red" /> 
         <ColorAnimation 
          Storyboard.TargetName="RedRect" 
          Storyboard.TargetProperty="Fill.Color" 
          To="Lime" /> 
        </Storyboard> 
       </BeginStoryboard> 

      </EventTrigger> 

     </StackPanel.Triggers> 


     <Button 
      x:Name="TheButton" 
      Content="Play" /> 

     <Rectangle 
      x:Name="LimeRect" 
      Fill="Lime" 
      Width="50" 
      Height="50" /> 

     <Rectangle 
      x:Name="RedRect" 
      Fill="Red" 
      Width="50" 
      Height="50" /> 

    </StackPanel> 

, 당신은 Storyboard.TargetName="TargetName" 대신 Storyboard.Target="{Binding PathToTarget}"를 사용할 수 있습니다.

편집 : 버튼 자체를 애니메이션하는 경우 오른쪽 버튼으로 트리거를 넣을 수 있습니다,

(주석 참조) 어떤 대상의 이름이 필요하지 않습니다.

예 - ToggleButton의 크기를 애니메이션은 :

<ToggleButton 
     Content="Toggle" 
     Width="50" 
     Height="50"> 

     <ToggleButton.Triggers> 

      <EventTrigger 
       RoutedEvent="ToggleButton.Checked"> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation 
          Duration="00:00:00.2" 
          Storyboard.TargetProperty="Width" 
          To="100" /> 
         <DoubleAnimation 
          Duration="00:00:00.2" 
          Storyboard.TargetProperty="Height" 
          To="100" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 

      <EventTrigger 
       RoutedEvent="ToggleButton.Unchecked"> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation 
          Duration="00:00:00.2" 
          Storyboard.TargetProperty="Width" 
          To="50" /> 
         <DoubleAnimation 
          Duration="00:00:00.2" 
          Storyboard.TargetProperty="Height" 
          To="50" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 

     </ToggleButton.Triggers> 

    </ToggleButton> 
+0

omsdsmr 이봐, 당신의 대답에 대한 감사는 크게 감사합니다 :)! 무슨 뜻인지 알지만이 경우 애니메이션 자체가 필요한 단추입니다. 클릭하면 큰 크기가되고, 다시 클릭하면 정상 크기로 되돌아갑니다. – bomortensen

+0

아 ... 운이 좋으면 원하는 것보다 실제로 생각보다 쉽습니다. 내 대답을 다른 예제로 업데이트했습니다. 행운을 빌어 요. –

+0

omdsmr : 나는 그것이 내가 찾고있는 것일지도 모른다라고 생각한다. 내가 내일 사무실에 도착했을 때 그것을 시험해보고 나는 그것을 어떻게 작동시키는 지 알려줄 것이다. 도와 주셔서 정말로 고맙습니다! – bomortensen

관련 문제