Вы всегда можете создать прикрепленное свойство для высоты, которое ничего не делает, кроме как установить свойство высоты в целевом элементе управления, таким образом вы можете анимировать, используя To для вашего присоединенного свойства.
public class AnimatedPanelBehavior
{
public static double GetAnimatedHeight(DependencyObject obj)
{
return (double)obj.GetValue(AnimatedHeightProperty);
}
public static void SetAnimatedHeight(DependencyObject obj, double value)
{
obj.SetValue(AnimatedHeightProperty, value);
}
public static readonly DependencyProperty AnimatedHeightProperty =
DependencyProperty.RegisterAttached("AnimatedHeight", typeof(double), typeof(AnimatedPanelBehavior), new UIPropertyMetadata(0d, new PropertyChangedCallback((s, e) =>
{
FrameworkElement sender = s as FrameworkElement;
sender.Height = (double)e.NewValue;
})));
}
Тогда для анимации вы использовали бы обычную анимацию, просто попробовали ее сейчас, и она отлично работает, но я не исследовал дальше, чем "она работает".
<DoubleAnimation Storyboard.TargetProperty="(local:AnimatedPanelBehavior.AnimatedHeight)" To="100" Duration="0:0:5"/>
используйте AnimatedHeight вместо высоты на всем, что вы хотите анимировать.