C# 如何在特定状态下停止动画

C# 如何在特定状态下停止动画,c#,wpf,storyboard,C#,Wpf,Storyboard,我正在从代码隐藏创建淡入淡出动画。我试图在一个特定的眨眼时间停止动画,它工作正常。但我想确保当我的动画停止时,它应该停止在淡出状态。下面是我的代码: public void AddAnimation(long blinkDuration = 0) { var fadeIn = new DoubleAnimation(0.3, 1, TimeSpan.FromSeconds(1), FillBehavior.HoldEnd) {

我正在从代码隐藏创建淡入淡出动画。我试图在一个特定的眨眼时间停止动画,它工作正常。但我想确保当我的动画停止时,它应该停止在淡出状态。下面是我的代码:

public void AddAnimation(long blinkDuration = 0)
        {
            var fadeIn = new DoubleAnimation(0.3, 1, TimeSpan.FromSeconds(1), FillBehavior.HoldEnd)
            {
                BeginTime = TimeSpan.FromSeconds(0)
            };

            var fadeOut = new DoubleAnimation(1.0, 0.3, TimeSpan.FromSeconds(1), FillBehavior.HoldEnd)
            {
                BeginTime = TimeSpan.FromSeconds(0.5)
            };

            storyboard = new Storyboard();
            Storyboard.SetTarget(fadeIn, this);
            Storyboard.SetTarget(fadeOut, this);
            Storyboard.SetTargetProperty(fadeIn, new PropertyPath("(Opacity)"));
            Storyboard.SetTargetProperty(fadeOut, new PropertyPath("(Opacity)"));
            storyboard.RepeatBehavior = blinkDuration == 0
                                            ? RepeatBehavior.Forever
                                            : new RepeatBehavior(new TimeSpan(0, 0, Convert.ToInt32(blinkDuration)));
            storyboard.Children.Add(fadeIn);
            storyboard.Children.Add(fadeOut);
            storyboard.Begin();
        }
我的问题是如何在闪烁间隔后使脚本上的图标状态淡出停止。

您可以使用
HoldEnd
的值,该值将保留您在
脚本中设置的最后一个值(或
值)。这样,您可以确保最终值是什么。使用此属性可能遇到的唯一问题是,可能需要多次运行动画

为此,如果满足特定条件(运行次数、经过的秒数或数据到达等),则可以将处理程序附加到脚本,并在脚本完成后重新运行脚本:


我已经修好了。我更改了情节提要。开始调用并注册情节提要。已完成事件,我正在调用情节提要。停止()

以下是我更改的代码:

storyboard.Completed += StoryboardCompleted;
storyboard.Begin(this, true);

void StoryboardCompleted(object sender, EventArgs e)
{
   storyboard.Stop(this);
}
storyboard.Completed += StoryboardCompleted;
storyboard.Begin(this, true);

void StoryboardCompleted(object sender, EventArgs e)
{
   storyboard.Stop(this);
}