private static void DoScaleTansition( IScaleParams scaleParams, FrameworkElement target, RoutedEventHandler onLoaded, Visibility?visibility) { var reverse = Transitionz.IsVisibilityHidden(visibility); var scaleTransform = new ScaleTransform() { ScaleX = reverse ? scaleParams.To.X : scaleParams.From.X, ScaleY = reverse ? scaleParams.To.Y : scaleParams.From.Y }; target.LayoutTransform = scaleTransform; if (onLoaded != null && Transitionz.HasFlag(scaleParams.TransitionOn, TransitionOn.Once)) { target.Loaded -= onLoaded; } if (Math.Abs(scaleParams.From.X - scaleParams.To.X) > 0.001) { var x = new DoubleAnimation { From = reverse ? scaleParams.To.X : scaleParams.From.X, To = reverse ? scaleParams.From.X : scaleParams.To.X, FillBehavior = scaleParams.FillBehavior, BeginTime = TimeSpan.FromMilliseconds(scaleParams.BeginTime), Duration = new Duration(TimeSpan.FromMilliseconds(scaleParams.Duration)), EasingFunction = reverse ? (scaleParams.ReverseEase ?? scaleParams.Ease) : scaleParams.Ease, AutoReverse = scaleParams.AutoReverse, }; x.SetDesiredFrameRate(24); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, x); } if (Math.Abs(scaleParams.From.Y - scaleParams.To.Y) > 0.001) { var y = new DoubleAnimation { From = reverse ? scaleParams.To.Y : scaleParams.From.Y, To = reverse ? scaleParams.From.Y : scaleParams.To.Y, FillBehavior = scaleParams.FillBehavior, BeginTime = TimeSpan.FromMilliseconds(scaleParams.BeginTime), Duration = new Duration(TimeSpan.FromMilliseconds(scaleParams.Duration)), EasingFunction = reverse ? (scaleParams.ReverseEase ?? scaleParams.Ease) : scaleParams.Ease, AutoReverse = scaleParams.AutoReverse, }; y.SetDesiredFrameRate(24); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, y); } }
public static void SetLayoutScale(UIElement element, IScaleParams value) { element.SetValue(LayoutScaleProperty, value); }