private Storyboard AnimationForElement(FrameworkElement element, int index)
{
double delay = 30;
double duration = (IsOpen) ? 350 : 250;
double from = (IsOpen) ? -45 : 0;
double to = (IsOpen) ? 0 : 90;
ExponentialEase ee = new ExponentialEase()
{
EasingMode = (IsOpen) ? EasingMode.EaseOut : EasingMode.EaseIn,
Exponent = 5,
};
DoubleAnimation anim = new DoubleAnimation()
{
Duration = new Duration(TimeSpan.FromMilliseconds(duration)),
From = from,
To = to,
EasingFunction = ee,
};
Storyboard.SetTarget(anim, element);
Storyboard.SetTargetProperty(anim, new PropertyPath("(UIElement.Projection).(PlaneProjection.RotationX)"));
Storyboard board = new Storyboard();
board.BeginTime = TimeSpan.FromMilliseconds(delay * index);
board.Children.Add(anim);
return board;
}