/// <summary> /// Translates the target element as requested by the parameters and executes the action request. /// </summary> /// <param name="target">The given element.</param> /// <param name="fromX">The starting x Translate transform value.</param> /// <param name="fromY">The starting y Translate transform value.</param> /// <param name="toX">The final x Translate transform value.</param> /// <param name="toY">The final y Translate transform value.</param> /// <param name="duration">How long should the transition take.</param> /// <param name="action">The action request to be executed later.</param> public static void Translate(this FrameworkElement target, double?fromX, double?fromY, double?toX, double?toY, TimeSpan duration, RequestBase action) { Storyboard board = GetAndCreateStoryboardIfNotPresent(target); if (fromX != null && toX != null) { (board.Children[0] as DoubleAnimation).From = fromX; (board.Children[0] as DoubleAnimation).To = toX; (board.Children[0] as DoubleAnimation).Duration = new Duration(duration); } if (fromY != null && toY != null) { (board.Children[1] as DoubleAnimation).From = fromY; (board.Children[1] as DoubleAnimation).To = toY; (board.Children[1] as DoubleAnimation).Duration = new Duration(duration); } string boardName = board.GetValue(FrameworkElement.NameProperty) as string; if (delayedExecution.ContainsKey(boardName)) { delayedExecution.Remove(boardName); } if (action != null) { delayedExecution.Add(boardName, action); board.Completed += CompletedHandler; } board.Begin(target); }
internal static void ChangeScaleAndOpacity(FrameworkElement target, double?scaleFrom, double?scaleTo, double?opacityFrom, double?opacityTo, TimeSpan duration, RequestBase action) { Storyboard board = GetAndCreateStoryboardIfNotPresent(target); if (scaleFrom != null && scaleTo != null) { (board.Children[0] as DoubleAnimation).From = scaleFrom; (board.Children[0] as DoubleAnimation).To = scaleTo; (board.Children[0] as DoubleAnimation).Duration = new Duration(duration); (board.Children[1] as DoubleAnimation).From = scaleFrom; (board.Children[1] as DoubleAnimation).To = scaleTo; (board.Children[1] as DoubleAnimation).Duration = new Duration(duration); } if (opacityFrom != null && opacityTo != null) { (board.Children[2] as DoubleAnimation).From = opacityFrom; (board.Children[2] as DoubleAnimation).To = opacityTo; (board.Children[2] as DoubleAnimation).Duration = new Duration(duration); } string boardName = board.GetValue(FrameworkElement.NameProperty) as string; if (delayedExecution.ContainsKey(boardName)) { delayedExecution.Remove(boardName); } if (action != null) { delayedExecution.Add(boardName, action); board.Completed += CompletedHandler; } board.Begin(target); }