WPF Анимация ширины границы - PullRequest
0 голосов
/ 19 февраля 2010

У меня есть док-панель на моем интерфейсе, как показано ниже:

<DockPanel>
    <Border DockPanel.Dock="Top">Header</Border>
    <Border DockPanel.Dock="Bottom">My footer</Border>
    <Border DockPanel.Dock="Left">Menu</Border>

    <Border>Content</Border>
 </DockPanel>

Я хочу сделать анимацию раскадровки, чтобы показывать / скрывать Меню с левой стороны.У меня есть граница для увеличения ширины, когда она загружена, но я хочу, чтобы закрыть / открыть ее снова.Мне где-то нужна кнопка, но я хочу, чтобы она запускала анимацию в элементе управления границей, а не в самой себе.В идеале я думал о чем-то вроде Toolbox / Server Explorer в visual studio.

У кого-нибудь есть какие-нибудь указатели / примеры для начала работы?

Спасибо

1 Ответ

3 голосов
/ 19 февраля 2010

Я не уверен, что понимаю, что вы имеете в виду, но если вы хотите анимировать его вход / выход, то вы, вероятно, хотите обновить его ширину?Если у вас есть свойство в ViewModel / PresentationModel, к которому вы можете привязаться, то вы можете сделать что-то вроде:

<DataTrigger Binding="{Binding IShouldBeVisible}" Value="True">
    <DataTrigger.EnterActions>
        <BeginStoryboard>
            <Storyboard AccelerationRatio="0.4" DecelerationRatio="0.4">
                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Width)">
                    <SplineDoubleKeyFrame KeyTime="00:00:0.13" Value="100"/>
                </DoubleAnimationUsingKeyFrames>
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.EnterActions>
    <DataTrigger.ExitActions>
        <BeginStoryboard>
            <Storyboard AccelerationRatio="0.4" DecelerationRatio="0.4">
                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Width)">
                    <SplineDoubleKeyFrame KeyTime="00:00:0.1" Value="0"/>
                </DoubleAnimationUsingKeyFrames>
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.ExitActions>
</DataTrigger>

Если вы делаете сложные анимации, которые изменяют несколько свойств, различные временные параметры и т. Д., Тогда гораздо прощесобрать в Blend, даже если вы делаете это в тестовом проекте, а затем вырезать + вставить получившуюся StoryBoard: -)

...