【问题标题】:Animate a StackPanel when the property Visibility changes属性 Visibility 更改时为 StackPanel 设置动画
【发布时间】:2010-09-30 18:13:33
【问题描述】:

在 WPF 3.5(带有 SP1)中,我有一个简单的 StackPanel,当我更改属性 Visibility 时我想为它设置动画。我不知道这个 StackPanel 的高度,因为它的内容决定了它的高度。因此,当我将 StackPanel 的属性更改为 Visible (progressPanel.Visibility = Visibility.Visible;) 时,我希望看到一个动画(可能是从 0 到 X 的 DoubleAnimationUsingKeyFrames)。

此外,我有多个 StackPanel 我希望看到这种行为(所以在最好的情况下,我需要一些通用的东西)。 有人知道怎么做吗?

谢谢!

【问题讨论】:

    标签: .net wpf .net-3.5 c#-3.0


    【解决方案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?
    • 不清楚你想要达到什么样的效果。请更新您的问题并提供有关所需 StackPanel 行为的详细信息。手动更改 StackPanel.Height 属性对我来说不是一个好主意
    【解决方案2】:

    如果您需要一种具有垂直增长动画的扩展效果。如果是垂直方向的面板,则在面板的 ScaleTransform.ScaleY 属性上做一个从 0 到 1 的双重动画。

    【讨论】:

    • 为什么对我不利:)。当您无法确定 stackPanel 的实际高度时,最好将 ScaleTransform.ScaleX 从 0 设置为 1 的动画,这样可以解决问题,尝试一下,然后投反对票。
    猜你喜欢
    • 2013-06-20
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多