/// <summary> /// Internal method to hide the adorner. /// </summary> private void HideAdornerInternal() { if (this.adornerLayer == null || this.adorner == null) { // Not already adorned. return; } // Stop the timer that might be about to fade out the adorner. this.adornerLayer.Remove(this.adorner); this.adorner.DisconnectChild(); this.adorner = null; this.adornerLayer = null; // Ensure that the state of the adorned control reflects that // the the adorner is no longer. this.adornerShowState = AdornerShowState.Hidden; }
/// <summary> /// Internal method to show the adorner. /// </summary> private void ShowAdornerInternal() { if (this.adorner != null) { // Already adorned. return; } if (this.AdornerContent != null) { if (this.adornerLayer == null) { this.adornerLayer = AdornerLayer.GetAdornerLayer(this); } if (this.adornerLayer != null) { FrameworkElement adornedControl = this; // The control to be adorned defaults to 'this'. if (!string.IsNullOrEmpty(this.AdornedTemplatePartName)) { // // If 'AdornedTemplatePartName' is set to a valid string then search the visual-tree // for a UI element that has the specified part name. If we find it then use it as the // adorned control, otherwise throw an exception. // adornedControl = FindNamedChild(this, this.AdornedTemplatePartName); if (adornedControl == null) { throw new ApplicationException("Failed to find a FrameworkElement in the visual-tree with the part name '" + this.AdornedTemplatePartName + "'."); } } this.adorner = new FrameworkElementAdorner(this.AdornerContent, adornedControl, this.HorizontalAdornerPlacement, this.VerticalAdornerPlacement, this.AdornerOffsetX, this.AdornerOffsetY); this.adornerLayer.Add(this.adorner); UpdateAdornerDataContext(); } } this.adornerShowState = AdornerShowState.Visible; }