【问题标题】:Blink animation style for period of time一段时间的闪烁动画样式
【发布时间】:2018-12-23 03:40:03
【问题描述】:

所以我有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 并且在我启动动画后我仍然看不到它。

【问题讨论】:

    标签: wpf storyboard


    【解决方案1】:

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

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

    StackPanel sp;
    sp.Visibility = Visibility.Visible;
    

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

    【讨论】:

    • @falukky 您是否尝试更改可见性而不是启动情节提要?
    • 是的,现在我明白你在说什么了,顺便说一句,我怎样才能把它改回情节提要内的折叠状态?
    • @falukky 使用DiscreteObjectKeyFrame 如此处所示stackoverflow.com/a/5495505/366064
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2012-03-12
    • 2011-03-30
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多