所以我有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);
所以目前我的StackPanelVisibility
是Collapsed
,在我启动动画后,我仍然看不到它
您的代码很好。但是你开始动画的方法是错误的。当Visibility
变为Visible
时,触发器将启动动画。相反(你的最后一段代码表明(启动动画不会改变可见性,因为你没有编写这样做的逻辑
因此,对于给定的代码,您需要更改可见性才能开始动画:
StackPanel sp;
sp.Visibility = Visibility.Visible;
请注意,动画只有在进入Visible
状态时才开始。这意味着你需要先把它折叠起来或隐藏起来。