1

天気を切り替えるボタンを追加したか、使用しているストーリーボードを繰り返さないようにするプログラムがあります

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;
  }
}

しかし、それはまったく機能していません。アニメーションが最初の再生の最後に到達すると、Completed イベントが発生し (それを行うべきではありません)、アニメーションは停止します (それも)。私はいくつかの異なるアプローチを試してみましたが、役に立ちませんでした。私の検索はすべて、それが孤立した問題であることを示しているようです。

ここで何が間違っていますか?

これは、ストーリーボードにアニメーションを追加する場所の 1 つです。これが切り取られた関数は、私が GlobalStoryboard の子にする Storyboard を返します。私はすでに 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;
}
4

1 に答える 1

0

LPL は正しかったです。ストーリーボードがアニメーション化されている場合、干渉を防ぐためにフリーズされます。繰り返しボタンをブール値にバインドし、完了したイベントが true の場合はストーリーボードを再度再生するようにしました。

于 2013-12-16T15:57:51.510 に答える