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