如何停止Storyboard

本文关键字:Storyboard 何停止 | 更新日期: 2023-09-27 18:15:53

我试图停止storyboard与mystoryboard.stop();但不幸的是,它不工作,也没有给出任何错误

Storyboard hours;
Storyboard minutes;
Storyboard seconds;
private void setStoryBoards(){
   hours = (Storyboard)this.FindResource("OnMouseWheel1");
   minutes = (Storyboard)this.FindResource("MinutesHighlighting");
   seconds = (Storyboard)this.FindResource("SecondsHighlighting");
}
private void HourStoryBoard()
{
    minutes.Stop(this);
    seconds.Stop(this);              
    this.BeginStoryboard(hours);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
   setStoryBoards();
   HourStoryBoard();
}

我想在播放另一个动画之前停止其他两个动画

注意:故事板动画是使用Ms Blend创建的,存在于<windows.resources>
动画正在播放,但没有停止
每个动画在storyboard上设置为播放5次

如何停止Storyboard

您可能无法停止一个故事板,但是您可以改变包含它的VisualState并开始一个新的故事板。尝试创建一个自定义VisualState。这也许能奏效。

[XAML]

<VisualStateManager.VisualStateGroups>
   <VisualStateGroup x:Name="CustomStates">
      <VisualState x:Name="Normal" />
      <VisualState x:Name="State1">
         <Storyboard>{STORYBOARD 1 HERE}</Storyboard>
      </VisualState>
      <VisualState x:Name="State2">
         <Storyboard>{STORYBOARD 2 HERE}</Storyboard>
      </VisualState>
   </VisualStateGroup>
</VisualStateManager.VisualStateGroups>
(c#)

private void UpdateStates(bool useTransitions)
{
   if (IsState1)
   {
       VisualStateManager.GoToState(this, "State1", useTransitions);
   }
   else if (IsState2)
   {
       VisualStateManager.GoToState(this, "State2", useTransitions);
   }
}