2010-09-23 69 views
0

我有一個畫布控件,當您將鼠標移動到其上並在鼠標離開時收縮時,它的高度會增加。wpf動畫事件重疊

<Canvas x:Name="infoBar" Width="720" Height="39" Background="Red"> 
      <Canvas.Triggers> 
       <EventTrigger RoutedEvent="Canvas.MouseEnter"> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation 
      Storyboard.TargetName="infoBar" 
      Storyboard.TargetProperty="Height" 
      From="39" To="255" Duration="0:0:0.5" 
      /> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
       <EventTrigger RoutedEvent="Canvas.MouseLeave"> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation 
      Storyboard.TargetName="infoBar" 
      Storyboard.TargetProperty="Height" 
      From="255" To="39" Duration="0:0:0.5" 
      /> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Canvas.Triggers> 
      <StackPanel> 
       <TextBlock/> 
       <TextBlock/> 
      </StackPanel> 
     </Canvas> 

這工作正常。但是,如果發生兩個快速連續事件(在鼠標進入動畫結束之前的mouseleave),它會變得瘋狂。

是否有反正我可以告訴它取消動畫結束前發生的任何其他事件?

回答

1

使用事件觸發器,您可以在命名故事板上執行暫停,停止,恢復等命令。

這個article應該回答你的問題。

+1

謝謝你回答我的問題。但是我不認爲我清楚地解釋了我的問題。我的問題是,當事件真的很快發生時,控制器會停止動畫並快速從最小值跳到最大值。通過從動畫中刪除「From」值來修復它。 – 2010-09-23 15:12:08