/// <summary> /// The on is pinned property changed. /// </summary> /// <param name="d"> /// The d. /// </param> /// <param name="e"> /// The e. /// </param> private static void OnIsPinnedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var tooltip = (PinnableTooltip)d; if ((bool)e.NewValue) { if (tooltip.adornerDragDrop == null && tooltip.adorner != null) { tooltip.adornerDragDrop = ControlAdornerDragDrop.Attach(tooltip.adorner); } if (tooltip.IsTimerEnabled) { tooltip.timer.StopAndReset(); } } else { if (tooltip.adornerDragDrop != null) { ControlAdornerDragDrop.Detach(tooltip.adornerDragDrop); tooltip.adornerDragDrop = null; } tooltip.IsOpen = false; } }
/// <summary> /// The remove adorner. /// </summary> private void RemoveAdorner() { if (this.adorner == null || this.adornerLayer == null) { return; } if (this.adornerDragDrop != null) { ControlAdornerDragDrop.Detach(this.adornerDragDrop); this.adornerDragDrop = null; } this.adornerLayer.Remove(this.adorner); this.adorner.Child = null; this.adorner = null; this.adornerLayer = null; this.RegisterBeingMovedOut(); }
/// <summary> /// Brings pinned toooltip to front. /// </summary> public void BringToFront() { if (this.IsInFront()) { return; } if (this.IsPinned && this.adorner != null) { if (this.adornerDragDrop != null) { ControlAdornerDragDrop.Detach(this.adornerDragDrop); this.adornerDragDrop = null; } this.adornerLayer.Remove(this.adorner); var adornedElement = this.GetAdornerElement(); if (adornedElement == null) { return; } this.adornerLayer = AdornerLayer.GetAdornerLayer(adornedElement); if (this.adornerLayer == null) { return; } this.adornerLayer.Add(this.adorner); if (this.IsPinned && this.adornerDragDrop == null) { this.adornerDragDrop = ControlAdornerDragDrop.Attach(this.adorner); } this.RegisterBeingInFront(); } }