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