Все «прыгает вокруг», потому что каждый раз, когда Height
элемента управления изменяется, все содержащиеся элементы управления перемещаются в соответствии с новым доступным пространством.
Для достижения желаемого эффекта вы должны использовать RenderTransform
вместо изменения фактического Height
элемента управления.
Вот как вы можете это сделать.Сначала добавьте ScaleTransform
в качестве значения RenderTransform
свойства вашего элемента управления:
<MyUserControl.RenderTransform>
<ScaleTransform ScaleY="0" />
</MyUserControl.RenderTransform>
Затем измените целевое свойство вашей анимации, чтобы изменить свойство ScaleY
преобразования:
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" Storyboard.TargetName="MyUserControl" To="145" Duration="0:0:1" />
</Storyboard>
Обновление:
Другим способом достижения эффекта «скольжения в поле зрения» является использование TranslateTransform
с отрицательным значением Y
:
<MyUserControl.RenderTransform>
<TranslateTransform Y="-1000" />
</MyUserControl.RenderTransform>
А затем анимируйте его свойство Y
до 0:
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(TranslateTransform.Y)" Storyboard.TargetName="MyUserControl" To="0" Duration="0:0:1" />
</Storyboard>