/// <summary> /// Вызывается при завершении раскадровки. /// </summary> private void Storyboard_Completed(object sender, object e) { var obj = sender as Storyboard; obj.Completed -= Storyboard_Completed; if (obj.Children.Count == 0) { return; } var target = StoryboardServices.GetTarget(obj.Children[0]) as UIElement; target.Visibility = Visibility.Collapsed; if (IsFirstRoot) { RootPanel.Children.Remove(target); } else { SubRootPanel.Children.Remove(target); } ElementsOnScreen.Remove(target); ElementsOnScreenCount--; }
/// <summary> /// Вовзращает анимацию исчезновения для указанного элемента. /// </summary> /// <param name="element">Элемент, к которому применяется анимация.</param> /// <param name="duration">Длительность анимации.</param> private static Timeline CreateFadeOutTimeline(UIElement element, double duration) { var timeline = new DoubleAnimation(); timeline.Duration = TimeSpan.FromSeconds(duration); timeline.To = 0; StoryboardServices.SetTarget(timeline, element); Storyboard.SetTargetProperty(timeline, OpacityPropertyPath); return(timeline); }
/// <summary> /// Возвращает анимацию изменения фонового цвета элемента. /// </summary> /// <param name="element">Элемент, к которому применяется анимация.</param> /// <param name="fillColor">Цвет, на который требуется изменить цвет.</param> /// <param name="duration">ДЛительность анимации.</param> private static Timeline CreateChangeColorTimeline(UIElement element, Color fillColor, double duration) { var timeline = new ColorAnimation(); timeline.Duration = TimeSpan.FromSeconds(duration); timeline.To = fillColor; StoryboardServices.SetTarget(timeline, element); Storyboard.SetTargetProperty(timeline, FillProperty); return(timeline); }
/// <summary> /// Возвращает анимацию увеличения высоты для указанного элемента. /// </summary> /// <param name="element">Элемент, к которому применяется анимация.</param> /// <param name="scaleFactor">Значение, во сколько раз требуется изменить Высоту.</param> /// <param name="IsInverted">Требуется ли инвертировать значение.</param> /// <param name="duration">Длительность анимации.</param> private static Timeline CreateResizeHeightTimeline(UIElement element, double resizeFactor, bool IsInverted, double duration) { var timeline = new DoubleAnimation(); timeline.Duration = TimeSpan.FromSeconds(duration); timeline.From = 0; if (IsInverted) { timeline.To = -resizeFactor; } else { timeline.To = resizeFactor; } StoryboardServices.SetTarget(timeline, element); Storyboard.SetTargetProperty(timeline, ScaleYPropertyPath); return(timeline); }