我使用了一个故事板,用于闪烁一个 Image
. 我在XAML上定义了故事板。
<UserControl.Resources>
<Storyboard x:Key="AnimateFlicker" RepeatBehavior="Forever">
<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="0"
To="1"
AutoReverse="True"
BeginTime="0:0:1"
Duration="0:0:0.08" />
<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="1"
To="1"
AutoReverse="True"
Duration="0:0:0.4" />
<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="1"
To="0"
AutoReverse="True"
Duration="0:0:0.08" />
</Storyboard>
</UserControl.Resources>
在我的代码中,我用这段代码来启动故事板。
private void Blink(bool blink)
{
Storyboard storyboard = TryFindResource("AnimateFlicker") as Storyboard;
if (blink)
{
if (storyboard != null)
{
imgState.BeginStoryboard(storyboard, HandoffBehavior.SnapshotAndReplace, true);
}
}
else
{
storyboard.Stop(); //this line wont work and blinking continues.
}
}
但正如我在代码中提到的 storyboard.Stop()
不起作用,继续闪烁。怎样才能在开始闪烁后停止闪烁?
调用 Storyboard.Begin
然后 Storyboard.Pause
或 Storyboard.Pause
取决于你是否希望动画目标属性仍然受到影响。
private void Blink(bool blink)
{
Storyboard storyboard = TryFindResource("AnimateFlicker") as Storyboard;
if (blink)
{
if (storyboard != null)
{
storyboard.Begin(imgState, HandoffBehavior.SnapshotAndReplace, true);
}
}
else
{
storyboard.Pause(imgState);
}
}