隐藏WPF StackPanel(不是扩展器)的问题

本文关键字:扩展器 问题 WPF StackPanel 隐藏 | 更新日期: 2023-09-27 18:13:36

我对WPF StackPanel有一个真正的麻烦-我需要使它动画不仅用于水平滚动其内容(这或多或少是ok的),而且我还必须通过按下包含窗口上的某些按钮使其扩展/折叠(动画)。

我已经尝试了很多动画扩展器控件(例如http://www.codeproject.com/KB/WPF/AnimatingExpander.aspx),但它们的功能过载(以及一些包含控件的工件),不适合我的任务。

所以问题是如何使简单的水平方向的StackPanel扩展/折叠与动画按钮点击?

隐藏WPF StackPanel(不是扩展器)的问题

最简单的方法是在ToggleButton.Checked.Unchecked事件上启动动画:

<StackPanel x:Name="MyStackPanel">...</StackPanel>
...
<ToggleButton Content="Click Me">
    <ToggleButton.Triggers>
        <EventTrigger RoutedEvent="ToggleButton.Checked">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="MyStackPanel" 
                                     Storyboard.TargetProperty="Width"
                                     To="0"
                                     Duration="0:0:0.5" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
        <EventTrigger RoutedEvent="ToggleButton.Unchecked">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="MyStackPanel" 
                                     Storyboard.TargetProperty="Width"
                                     To="200"
                                     Duration="0:0:0.5" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </ToggleButton.Triggers>
</ToggleButton>

为什么不为stackpanel的宽度添加一个storyboard和双动画呢?通过单击按钮,您可以在代码中启动动画或通过定义事件触发器。