所以我有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
,在启动动画之后,我仍然看不到它。
答案 0 :(得分:0)
您的代码很好。但是您启动动画的方法是错误的。当Visibility
更改为Visible
时,触发器将启动动画。反之亦然(最后一段代码表明)开始动画不会改变可见性,因为您没有编写执行该操作的逻辑
因此,使用给定的代码,您需要更改可见性才能启动动画:
StackPanel sp;
sp.Visibility = Visibility.Visible;
请注意,动画仅在进入Visible
状态时开始。这意味着您需要先使其折叠或隐藏。