当属性可见性发生变化时动画一个StackPanel
问题描述:
在WPF 3.5(带有SP1)中,我只有StackPanel,当我更改属性Visibility时我想动画。我不知道这个StackPanel的高度,因为它的内容决定了它的高度。所以当我将我的StackPanel的属性更改为Visible(progressPanel.Visibility = Visibility.Visible;)时,我想看到一个动画(可能是从0到X的DoubleAnimationUsingKeyFrames)。此外,我有多个StackPanel,我希望看到这种行为(所以在最好的情况下,我需要一些通用的)。 有没有人有关于如何做到这一点的想法?当属性可见性发生变化时动画一个StackPanel
谢谢!
答
您可以创建和重复触发动画自定义的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>
答
如果您需要使用垂直增长的动画扩展效果。如果面板是垂直面板,则在面板的ScaleTransform.ScaleY属性上执行双动画,从0到1。
为什么负我:)。当你无法确定stackPanel的实际高度时,最好将ScaleTransform.ScaleX的动画从0改为1,这样做可以实现,试用后再投票。 – 2009-01-11 17:09:48
只需编辑您的帖子,我就可以投票了。 – Martin 2009-01-11 21:12:11