2012-09-10 75 views
1

我是wpf的初學者。我從一個網站獲得了一個用於wpf動畫的代碼。動畫在停靠面板加載時啓動。我想改變動畫播放時間。我想當用戶點擊橢圓,然後動畫開始,當用戶點擊停靠面板時,動畫將停止。這裏是代碼。需要幫助來更改wpf動畫的代碼

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <DockPanel> 
     <Ellipse Width="200" Height="200" Name="MyEllipse"> 
      <Ellipse.Fill> 
       <RadialGradientBrush > 
        <GradientStop Offset="0" Color="#CCCCCCCC" /> 
        <GradientStop Offset="0.5" Color="white" /> 
        <GradientStop Offset="1" Color="black"/> 
       </RadialGradientBrush > 
      </Ellipse.Fill> 
     </Ellipse> 
     <DockPanel.Triggers> 
      <EventTrigger RoutedEvent="Page.Loaded"> 
       <BeginStoryboard Name="MyBeginStoryBoard"> 
        <Storyboard Name="MyStoryBoard"> 
         <DoubleAnimation Storyboard.TargetName="MyEllipse" Storyboard.TargetProperty="(Ellipse.Height)" 
      From="0" To="200" AutoReverse="true" 
      RepeatBehavior="0:0:10" BeginTime="0:0:0" /> 
         <DoubleAnimation Storyboard.TargetName="MyEllipse" Storyboard.TargetProperty="(Ellipse.Width)" 
      From="0" To="200" AutoReverse="true" 
      RepeatBehavior="0:0:10" BeginTime="0:0:0" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </DockPanel.Triggers> 
    </DockPanel> 
</Grid> 

回答

0

更改RoutedEventPreviewMouseDown而不是Page.Loaded

編輯: 您可以通過添加此,觸發了DockPanel.Triggers停止動畫:

<EventTrigger SourceName="MyEllipse" RoutedEvent="Ellipse.PreviewMouseDown"> 
    <StopStoryboard BeginStoryboardName="MyBeginStoryBoard" /> 
</EventTrigger> 

這將讓你通過點擊Ellipse停止動畫。 請參閱MSDN暫停/恢復等樣品

+0

但我該如何啓動和停止與PreviewMouseDown動畫?它是鼠標輸入。如何將鼠標移出以及如何停止動畫。 plzz討論。謝謝 – Thomas

+0

@Thomas我編輯了我的答案,並通過單擊橢圓添加了一個用於停止動畫的觸發器。 – Eirik

+0

我應用了我的代碼,但它不能按我想要的方式工作。你可以糾正我的代碼,以達到我想要的效果。謝謝 – Thomas