属性 Visibility 更改时为 StackPanel 设置动画
Posted
技术标签:
【中文标题】属性 Visibility 更改时为 StackPanel 设置动画【英文标题】:Animate a StackPanel when the property Visibility changes 【发布时间】:2010-09-30 18:13:33 【问题描述】:在 WPF 3.5(带有 SP1)中,我有一个简单的 StackPanel,当我更改属性 Visibility 时我想为它设置动画。我不知道这个 StackPanel 的高度,因为它的内容决定了它的高度。因此,当我将 StackPanel 的属性更改为 Visible (progressPanel.Visibility = Visibility.Visible;) 时,我希望看到一个动画(可能是从 0 到 X 的 DoubleAnimationUsingKeyFrames)。
此外,我有多个 StackPanel 我希望看到这种行为(所以在最好的情况下,我需要一些通用的东西)。 有人知道怎么做吗?
谢谢!
【问题讨论】:
【参考方案1】:您可以创建和重用在可见性更改时触发动画的自定义 StackPanel 样式:
<Style x:Key="MyStyle" TargetType="x:Type StackPanel">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard >
<DoubleAnimation .../>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
【讨论】:
您回答了我的问题的一部分。第二部分是 StackPanel 的高度。考虑到我不知道高度,我该如何使用 DoubleAnimation?如果您需要一种具有垂直增长动画的扩展效果。如果是垂直方向的面板,则在面板的 ScaleTransform.ScaleY 属性上做一个从 0 到 1 的双重动画。
【讨论】:
为什么对我不利:)。当您无法确定 stackPanel 的实际高度时,最好将 ScaleTransform.ScaleX 从 0 设置为 1 的动画,这样可以解决问题,尝试一下,然后投反对票。以上是关于属性 Visibility 更改时为 StackPanel 设置动画的主要内容,如果未能解决你的问题,请参考以下文章