public void ShowAnswer() { FrameworkElement answerContainer = ViewHelpers.FindSiblingByName(this, this.AnswerContainerName); Dispatcher.BeginInvoke(() => { IEasingFunction easeOut = new QuarticEase() { EasingMode = EasingMode.EaseOut }; Storyboard sb = new Storyboard(); // Animate the height DoubleAnimation heightAnim = new DoubleAnimation() { From = 0, To = this.AnswerContainerHeight, Duration = TimeSpan.FromMilliseconds(750), EasingFunction = easeOut, }; Storyboard.SetTargetProperty(heightAnim, new PropertyPath(FrameworkElement.HeightProperty)); Storyboard.SetTarget(heightAnim, answerContainer); sb.Children.Add(heightAnim); // 'Animate' the visibility ObjectAnimationUsingKeyFrames visibilityAnim = new ObjectAnimationUsingKeyFrames(); visibilityAnim.KeyFrames.Add(new DiscreteObjectKeyFrame() { KeyTime = TimeSpan.FromMilliseconds(0), Value = Visibility.Visible, }); Storyboard.SetTarget(visibilityAnim, answerContainer); Storyboard.SetTargetProperty(visibilityAnim, new PropertyPath(FrameworkElement.VisibilityProperty)); sb.Children.Add(visibilityAnim); // Add child animations //var children = ViewHelpers.GetChildren(answerContainer); //double offset = 0; //foreach (FrameworkElement child in children) //{ // offset += 100; // DoubleAnimation rotAnim = new DoubleAnimation() // { // From = 90, // To = 0, // Duration = TimeSpan.FromMilliseconds(1000), // EasingFunction = easeOut, // BeginTime = TimeSpan.FromMilliseconds(offset), // }; // Storyboard.SetTargetProperty(rotAnim, new PropertyPath(PlaneProjection.RotationXProperty)); // Storyboard.SetTarget(rotAnim, child); // sb.Children.Add(rotAnim); //} sb.Begin(); }); }