Поскольку я ненавижу преобразование масштаба, потому что мне это некрасиво, я искал другое решение.
Ну, я знаю, что это старый пост, и существует много обходных путей, но мой довольно прост, и я не читал его в другом месте, даже если кто-то наверняка его нашел.
Вместо того, чтобы анимировать высоту от 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>