/// <summary> /// Triggers the disappearance of a UIElement. /// </summary> /// <param name="uiElement"></param> /// <param name="done"></param> public static void Disappear(UIElement uiElement, Action <UIElement> done) { DateTime startTime = DateTime.Now; Transition transition = GetDisappearance(uiElement); TransitionState transitionState = null; if (activeDisappearances.TryGetValue(uiElement, out transitionState)) { transitionState.Progress = double.NaN; activeDisappearances.Remove(uiElement); } if (activeAppearances.TryGetValue(uiElement, out transitionState)) { if (transition != null) { startTime = startTime - TimeSpan.FromSeconds((1.0 - transitionState.Progress) * transition.Duration.TimeSpan.TotalSeconds); } transitionState.Progress = double.NaN; activeAppearances.Remove(uiElement); } if (transition != null) { transitionState = transition.CreateTransitionState(); activeDisappearances.Add(uiElement, transitionState); transitionState.Transition = transition; transitionState.UIElement = uiElement; transitionState.StartTime = startTime; transitionState.EndTime = transitionState.StartTime + transition.Duration.TimeSpan; transitionState.Done = done; transitionState.Progress = 1.0; } else { if (done != null) { done(uiElement); } } }
/// <summary> /// Cancels a UIElements appearance or disappearance. /// </summary> /// <param name="uiElement"></param> /// <param name="done"></param> /// <returns></returns> public static bool Cancel(UIElement uiElement, bool done) { Dictionary <UIElement, TransitionState> active = activeAppearances.ContainsKey(uiElement) ? activeAppearances : activeDisappearances.ContainsKey(uiElement) ? activeDisappearances : null; if (active != null) { TransitionState transitionState = active[uiElement]; transitionState.Progress = double.NaN; if (done && transitionState.Done != null) { transitionState.Done(uiElement); } active.Remove(uiElement); return(true); } return(false); }