WPF 堆栈面板可见性动画

标签 wpf visual-studio-2010 expression-blend

我有一个带有按钮的堆栈面板,单击该按钮后,堆栈面板就会消失。我想为隐藏的可见过渡表单设置动画,但无法实现。

我环顾了一会儿,撞到了一个看起来像这样的东西:

<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>

当然,这还不是 100%。有任何想法吗?

最佳答案

您可以使用

<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemsHost"
                               Storyboard.TargetProperty="Visibility">
    <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>

这几乎是 Storyboard中的一个 setter,其中 KeyTime 描述了应该设置值的时间。
所以完整的 Storyboard应该是这样的:
<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>

编辑:如何在单击按钮时触发 Storyboard :
<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 堆栈面板可见性动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685364/

相关文章:

c# - 如何找到一段代码的执行时间?

c++ - 使用 vs2010 (msbuild4) 在 .net 3.5 中构建托管 C++ 项目

c# - 无法在任何其他表单或类中访问我的新表单

wpf - 在复杂、解耦的 WPF 应用程序上使用 Expression Blend 的策略是什么?

c# - 在 XAML 中设置元素内容时,WPF 如何确定要设置的属性?

c# - 为什么数据未绑定(bind)到我的 WPF 应用程序中的标签

c# - WPF - 打印 ListView 的内容?

.net - C# WPF 第一次启动很慢

wpf - Expression Blend 和 Visual Studio (2008) 中的 WPF 设计器之间有什么区别?

expression-blend - 如何使用 WinJS 检测设计模式?