闪烁一段时间的动画样式

时间:2018-07-15 10:23:57

标签: wpf storyboard

所以我有StackPanel,我想眨眨眼Style来显示几秒钟,然后我希望它消失。

我不希望它是自动的,而是通过后面的代码控制它:

所以目前这是我到目前为止所拥有的:

<Style x:Key="FaderStyle" TargetType="{x:Type StackPanel}">
            <Style.Resources>
                <Storyboard x:Key="FadeStoryboard">
                    <DoubleAnimation Storyboard.TargetProperty="(StackPanel.Opacity)" 
                                     From="0"
                                     To="1" Duration="0:0:0.7"
                                     RepeatBehavior="0:0:5"
                                     AutoReverse="True"/>
                </Storyboard>
            </Style.Resources>
            <Style.Triggers>
                <Trigger Property="Visibility" Value="Visible">
                    <Trigger.EnterActions>
                        <BeginStoryboard Storyboard="{StaticResource FadeStoryboard}"/>
                    </Trigger.EnterActions>
                </Trigger>
            </Style.Triggers>
        </Style>

后面的代码:

StackPanel sp;
Storyboard storyboard = Resources["FaderStyle"] as Storyboard;
            if (storyboard != null)
                storyboard.Begin(sp);

因此,当前我的StackPanel VisibilityCollapsed,在启动动画之后,我仍然看不到它。

1 个答案:

答案 0 :(得分:0)

您的代码很好。但是您启动动画的方法是错误的。当Visibility更改为Visible时,触发器将启动动画。反之亦然(最后一段代码表明)开始动画不会改变可见性,因为您没有编写执行该操作的逻辑

因此,使用给定的代码,您需要更改可见性才能启动动画:

StackPanel sp;
sp.Visibility = Visibility.Visible;

请注意,动画仅在进入Visible状态时开始。这意味着您需要先使其折叠或隐藏。