Проблемы с сокрытием WPF StackPanel (не расширитель) - PullRequest
0 голосов
/ 03 ноября 2011

У меня реальная проблема с WPF StackPanel - мне нужно сделать его анимированным не только для горизонтальной прокрутки его содержимого (это нормально более или менее), но также я должен заставить его развернуться / свернуть (анимированный), нажав какая-то кнопка в содержащем окне.

Я перепробовал много анимированных элементов управления экспандером (например, http://www.codeproject.com/KB/WPF/AnimatingExpander.aspx), но они перегружены функциональностью (и некоторыми артефактами с содержащимися элементами управления) и не подходят для моей задачи.

Итак, вопрос в том, как сделать так, чтобы SIMPLE горизонтально ориентировался StackPanel, чтобы развернуть / свернуть с анимацией нажатием кнопки?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Самый простой подход - запустить анимацию для события 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>
0 голосов
/ 03 ноября 2011

Почему бы не добавить раскадровку и двойную анимацию для ширины стека. Нажав кнопку, вы можете запустить анимацию в коде или определить триггеры событий.

...