代码之家  ›  专栏  ›  技术社区  ›  falukky

闪烁动画样式一段时间

  •  1
  • falukky  · 技术社区  · 6 年前

    所以我有 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 Visibility Collapsed 在我开始动画之后,我仍然看不到它。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Bizhan    6 年前

    你的密码没问题。但是你启动动画的方法是错误的。触发器在以下情况下启动动画: Visibility 更改为 Visible . 不是相反的(最后一段代码指出的) 启动动画不会改变可见性,因为您没有编写这样做的逻辑

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

    StackPanel sp;
    sp.Visibility = Visibility.Visible;
    

    请注意,动画仅在进入时启动 可见 州。这意味着你需要先把它折叠或隐藏起来。