private static void ShowAdorner(UIElement targetElement, bool show, bool retry = true) { if (targetElement == null) { return; } var adornerLayer = AdornerLayer.GetAdornerLayer(targetElement); if (adornerLayer == null) { if (retry) { targetElement.Dispatcher.BeginInvoke( DispatcherPriority.Loaded, new Action(() => ShowAdorner(targetElement, show, false))); } return; } var adorner = targetElement.ReadLocalValue(AdornerProperty) as TemplatedAdorner; if (show && adorner == null) { var validationTemplate = GetTemplate(targetElement); if (validationTemplate != null) { adorner = new TemplatedAdorner(targetElement, validationTemplate); adornerLayer.Add(adorner); targetElement.SetValue(AdornerProperty, adorner); } } else if (!show && adorner != null) { adorner.ClearChild(); adornerLayer.Remove(adorner); targetElement.ClearValue(AdornerProperty); } }
private static void ShowAdorner(UIElement targetElement, bool show, bool retry = true) { if (targetElement == null) { return; } var adornerLayer = AdornerLayer.GetAdornerLayer(targetElement); if (adornerLayer == null) { if (retry) { targetElement.Dispatcher.BeginInvoke( DispatcherPriority.Loaded, new Action(() => ShowAdorner(targetElement, show, false))); } return; } var adorner = targetElement.ReadLocalValue(AdornerProperty) as TemplatedAdorner; if (show && adorner == null) { var validationTemplate = GetTemplate(targetElement); if (validationTemplate != null) { adorner = new TemplatedAdorner(targetElement, validationTemplate); adornerLayer.Add(adorner); targetElement.SetValue(AdornerProperty, adorner); } } else if (!show && adorner != null) { adorner.ClearChild(); adornerLayer.Remove(adorner); targetElement.ClearValue(AdornerProperty); } }