在wpf中启动故事板后停止故事板。

问题描述 投票:0回答:1

我使用了一个故事板,用于闪烁一个 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() 不起作用,继续闪烁。怎样才能在开始闪烁后停止闪烁?

c# wpf storyboard
1个回答
1
投票

调用 Storyboard.Begin 然后 Storyboard.PauseStoryboard.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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.