Это не совсем тот же сценарий, но он может помочь кому-то еще.
У меня была граница с высотой Auto, и я хотел, чтобы она анимировалась до определенной высоты.
Моя граница выглядела так:
<Border Name="ContainerBorder">
<!-- Stuff... -->
</Border>
Я создал эту раскадровку:
<Storyboard x:Key="EditIn">
<DoubleAnimation Storyboard.TargetProperty="Height"
Storyboard.TargetName="ContainerBorder"
Name="BorderAnimation"
To="45"
Duration="0:0:0.8" />
</Storyboard>
Кнопка, запускающая анимацию, имела некоторый код:
private void Edit_Click(object sender, RoutedEventArgs e) {
Storyboard sb = (Storyboard)FindResource("EditIn");
//Find the border animation
DoubleAnimation da = (DoubleAnimation)sb.Children.Where(t => t.Name == "BorderAnimation").FirstOrDefault();
if (da != null) { da.From = ContainerBorder.ActualHeight; }
sb.Begin(this);
}
Итак, я просто нашел границу и установил свойство «От» анимации в ActualHeight FrameworkElement.