public IFutureAnimation Create(FrameworkElement element) { void SetUpElement() { element.Visibility = InitialVisibility; element.Opacity = InitialOpacity; } var animation = new DoubleAnimation { BeginTime = Delay, Duration = Duration, EasingFunction = Easing, To = TargetOpacity }; Storyboard.SetTarget(animation, element); Storyboard.SetTargetProperty(animation, OpacityPath); void PostAction() => element.Visibility = TargetVisibility; return(animation .ToFutureAnimation() .Before(SetUpElement) .Then(PostAction)); }
public IFutureAnimation Create(FrameworkElement element) { void SetUpElement() { var transform = GetOrCreateTransform(element); element.RenderTransformOrigin = new Point(0.5, 0.5); transform.ScaleX = From; transform.ScaleY = From; } var scaleXAnimation = new DoubleAnimation { BeginTime = Delay, Duration = Duration, EasingFunction = Easing, To = To }; var scaleYAnimation = new DoubleAnimation { BeginTime = Delay, Duration = Duration, EasingFunction = Easing, To = To }; Storyboard.SetTarget(scaleXAnimation, element); Storyboard.SetTargetProperty(scaleXAnimation, ScaleXPath); Storyboard.SetTarget(scaleYAnimation, element); Storyboard.SetTargetProperty(scaleYAnimation, ScaleYPath); return(scaleXAnimation.ToFutureAnimation() .Pair(scaleYAnimation.ToFutureAnimation()) .Before(SetUpElement)); }