Анимация высоты групповой рамки от 0 до авто - PullRequest
10 голосов
/ 02 июля 2011

У меня в приложении есть групповые ящики, действующие как расширители.Когда мне нужно свернуть групповую коробку, я устанавливаю ее высоту, равную 0. Когда мне нужно расширить ее, я устанавливаю ее высоту, равную auto (double.Nan), если это возможно сделать с раскадровкой.Как я мог знать авто высоту заранее.Сочетание выражений не позволяет мне анимировать автоматически.

enter image description here

Ответы [ 2 ]

20 голосов
/ 10 апреля 2013

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

Ну, я знаю, что это старый пост, и существует много обходных путей, но мой довольно прост, и я не читал его в другом месте, даже если кто-то наверняка его нашел.
Вместо того, чтобы анимировать высоту от X до Auto (что невозможно), вы можете задать высоту Auto и анимировать свойство MaxHeight:

<MyControl x:Name="ctrlAutoHeight" Height="Auto">
    <MyControl.Triggers>
        <EventTrigger RoutedEvent="myRoutedEvent">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation 
                        Storyboard.TargetName="ctrlAutoHeight" 
                        Storyboard.TargetProperty="MaxHeight"
                        From="0.0" 
                        To="{Binding ElementName=ParentControl, Path=ActualHeight}"
                        Duration="0:0:1" 
                        AutoReverse="False"
                        />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </MyControl.Triggers>
</MyControl>
7 голосов
/ 14 июля 2011

Вы можете использовать ScaleTransform для этого

<GroupBox Header="GroupBox">
    <GroupBox.RenderTransform>
        <ScaleTransform ScaleY="1"/>
    </GroupBox.RenderTransform>
</GroupBox>

Когда свернуть групповую коробку, установите ScaleTransform.ScaleX на 0. А когда разверните, установите на 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...