2009-09-29 66 views
1

我使用故事板创建一个动画并且整个事情都在ItemsControl中,当我开始动画时启动应用程序,但是我希望能够在我们从数据库接收到值时立即停止动画。如何获取ItemsControl模板中的特定故事板,以便我可以在后面的代码中停止它。还是有一个属性,我可以将数据绑定和使用在代码后面。SilverLight StoryBoard问题

目前我的代码看起来像这样

<StackPanel 
    x:Name="spStart" 
    Margin="0,10,5,0"> 
    <Image x:Name="Round" Source="Images/Start.png" 
    Height="35" 
    Stretch="Uniform" 
    ToolTipService.ToolTip="Start" 
    RenderTransformOrigin="0.5,0.5"> 
    <Image.RenderTransform> 
     <TransformGroup> 
     <RotateTransform/> 
     </TransformGroup> 
    </Image.RenderTransform> 

    <Image.Triggers> 
     <EventTrigger RoutedEvent="Grid.Loaded"> 
     <BeginStoryboard> 
      <Storyboard x:Name="RotatingStory" Completed="myStoryboard_Completed" 
      x:Uid="{Binding FileReceived}"> 
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
       Storyboard.TargetName="Round" 
       Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(RotateTransform.Angle)"> 
       <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/> 
       <SplineDoubleKeyFrame KeyTime="00:00:03" Value="360"/> 
      </DoubleAnimationUsingKeyFrames> 
      </Storyboard> 
     </BeginStoryboard> 
     </EventTrigger> 
    </Image.Triggers> 
    </Image> 
</StackPanel> 
+0

使用事件,让你知道当你检索的DB值。 – Goober 2009-09-29 08:15:31

+0

我是Silverlight的新手,能否请我指点一下教程 – rsapru 2009-09-29 08:24:44

回答

1

望着文档已经试过这样: -

var sb = ((BeginStoryBoard)Round.Triggers[0].Actions[0]).Storyboard; 
sb.Stop; // Or whatever else you want to do the storyboard such as SkipToFill. 
+0

我不得不这样做 TriggerActionCollection actions =((System.Windows.EventTrigger)(Round.Triggers [0]))。 BeginStoryboard sbBeing =(BeginStoryboard)actions [0]; 但在哪个事件中我应该把这个代码? – rsapru 2009-09-29 09:50:34

+0

非常感谢。 – rsapru 2009-09-29 10:46:03