如何停止故事板

时间:2014-08-01 10:19:39

标签: c# wpf 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();
}

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

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

1 个答案:

答案 0 :(得分:1)

您可能无法停止故事板,但您可以更改包含它的VisualState并启动新的故事板。尝试创建Custom 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);
   }
}