/// <summary> /// Add a feedback adorner to a UI element. /// This is used to show when a connection can or can't be attached to a particular connector. /// 'indicator' will be a view-model object that is transformed into a UI element using a data-template. /// </summary> private void AddFeedbackAdorner(FrameworkElement adornedElement, object indicator) { AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this); if (feedbackAdorner != null) { if (feedbackAdorner.AdornedElement == adornedElement) { // No change. return; } adornerLayer.Remove(feedbackAdorner); feedbackAdorner = null; } // // Create a content control to contain 'indicator'. // The view-model object 'indicator' is transformed into a UI element using // normal WPF data-template rules. // ContentControl adornerElement = new ContentControl(); adornerElement.HorizontalAlignment = HorizontalAlignment.Left; adornerElement.VerticalAlignment = VerticalAlignment.Center; adornerElement.Content = indicator; // // Create the adorner and add it to the adorner layer. // feedbackAdorner = new FrameworkElementAdorner(adornerElement, adornedElement); adornerLayer.Add(feedbackAdorner); }
/// <summary> /// If there is an existing feedback adorner, remove it. /// </summary> private void ClearFeedbackAdorner() { if (feedbackAdorner == null) { return; } AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this); adornerLayer.Remove(feedbackAdorner); feedbackAdorner = null; }