/// <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 create adorner. /// </summary> private void CreateAdorner() { if (this.adorner != null || (Application.Current.MainWindow == null && this.userDefinedAdorner == null)) { return; } var adornedElement = this.GetAdornerElement(); if (adornedElement == null) { return; } AdornerLayer layer = AdornerLayer.GetAdornerLayer(adornedElement); if (layer == null) { return; } this.isPositionCalculated = false; var ad = new ControlAdorner(adornedElement) { Child = this, Focusable = false }; KeyboardNavigation.SetTabNavigation(ad, KeyboardNavigationMode.None); layer.Add(ad); this.adorner = ad; this.adornerLayer = layer; if (this.IsPinned && this.adornerDragDrop == null) { this.adornerDragDrop = ControlAdornerDragDrop.Attach(this.adorner); } this.RegisterBeingInFront(); }
/// <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(); } }