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

时间:2011-11-03 09:47:59

标签: c# wpf animation stackpanel

我在使用WPF StackPanel时遇到了麻烦 - 我需要让它动画不仅仅是为了滚动它的内容(这或多或少都可以),而且我必须让它展开/折叠(动画)按下包含窗口上的某个按钮。

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

所以问题是如何通过按钮点击使SIMPLE水平定向StackPanel通过动画展开/折叠?

2 个答案:

答案 0 :(得分:1)

最简单的方法是在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>

答案 1 :(得分:0)

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