WPF stackpanel可见性动画
我有一个带有按钮的stackpanel,当单击该按钮时,stackpanel将消失。我想设置从可见到隐藏的过渡形式的动画,但还不能 我环顾了一下四周,偶然发现了这样的东西:WPF stackpanel可见性动画,wpf,visual-studio-2010,expression-blend,Wpf,Visual Studio 2010,Expression Blend,我有一个带有按钮的stackpanel,当单击该按钮时,stackpanel将消失。我想设置从可见到隐藏的过渡形式的动画,但还不能 我环顾了一下四周,偶然发现了这样的东西: <StackPanel Margin="80,60,60,80" Background="Gray"> <StackPanel.Triggers > <EventTrigger > <EventTrigger.Actions>
<StackPanel Margin="80,60,60,80" Background="Gray">
<StackPanel.Triggers >
<EventTrigger >
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard TargetProperty="Visibility">
<DoubleAnimation Duration="0:0:5:0" From="Visible" To="Hidden"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</StackPanel.Triggers>
<Button Name="buttonTop" Content="TOP" Margin="40,40,40,40" Click="buttonTop_Click" Width="131" />
</StackPanel>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity"
To="0" Duration="0:0:5.0"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:5.0" Value="{x:Static Visibility.Hidden}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
当然,这还不是100%的。有什么想法吗
visibility
是一个离散值-它可以打开也可以关闭,因此动画仍然会导致突然消失,而不是逐渐淡出。您可以将堆栈面板的不透明度
从1设置为0,然后将可见性
设置为隐藏
(或折叠
)之后的动画。您可以使用
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemsHost"
Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
这几乎是故事板中的一个setter,其中KeyTime描述了应该设置值的时间。
因此,完整的情节提要如下所示:
<StackPanel Margin="80,60,60,80" Background="Gray">
<StackPanel.Triggers >
<EventTrigger >
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard TargetProperty="Visibility">
<DoubleAnimation Duration="0:0:5:0" From="Visible" To="Hidden"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</StackPanel.Triggers>
<Button Name="buttonTop" Content="TOP" Margin="40,40,40,40" Click="buttonTop_Click" Width="131" />
</StackPanel>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity"
To="0" Duration="0:0:5.0"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:5.0" Value="{x:Static Visibility.Hidden}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
编辑:单击按钮时如何使情节提要触发:
<Button Content="Button" HorizontalAlignment="Left" Margin="337,221,0,0" VerticalAlignment="Top" Width="75">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity"
To="0" Duration="0:0:5.0"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:5.0" Value="{x:Static Visibility.Hidden}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
谢谢您的详细回答。它工作得很好。我如何设置它,使其在我点击按钮时激活?我理解这个想法,但由于我对wpf非常陌生,我缺乏将想法转换为代码的知识。请提供更详细的答复。