Storyboard.RepeatBehavior无效

时间:2012-07-31 17:08:08

标签: c# wpf animation storyboard

我有一个程序,我已经添加了一个按钮来切换天气或不是我正在使用的故事板应该重复

private void Repeat_Click(object sender, RoutedEventArgs e)
{
  if (globalStoryboard.Children.Count != 0)
  {
    if (globalStoryboard.RepeatBehavior == RepeatBehavior.Forever)
      globalStoryboard.RepeatBehavior = new RepeatBehavior(1.0);
    else
      globalStoryboard.RepeatBehavior = RepeatBehavior.Forever;
  }
}

但它根本不起作用。当动画到达第一次播放结束时,“完成”事件将触发(它不应该这样做),动画就会停止(也就是说)。我尝试了几种不同的方法无济于事,我所有的搜索似乎都表明它是一个孤立的问题。

我在这里做错了什么?

这是我在故事板中添加动画的地方之一。这个被删除的功能返回了Storyboard s,然后我将其作为GlobalStoryboard的子项。我已经尝试将GlobalStoryboard传递给该函数并直接向其添加动画以删除中间故事板。它没有解决问题。

double last = ((data[0] - min) / delta) * angle;
for (double k = 1.001; k < data.Count; k++)
{
  double val = ((data[(int)k] - min) / delta) * angle;
  DoubleAnimation doubleAnimation = new DoubleAnimation();
  doubleAnimation.From = last;
  doubleAnimation.To = val;
  doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(1));
  doubleAnimation.BeginTime = TimeSpan.FromSeconds(k - 1);
  s.Children.Add(doubleAnimation);
  Storyboard.SetTargetName(doubleAnimation, "AxisRotation" + index);
  Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Angle"));
  last = val;
}

1 个答案:

答案 0 :(得分:0)

LPL是正确的,当故事板是动画时,它被冻结以防止干扰。我只是将重复按钮绑定到一个布尔值,并使完成的事件再次播放故事板,如果它是真的。