/// <summary> /// Shows a validation failure. /// </summary> /// <param name="validationFailure">Information about the validation failure, including the element on which to show the validation and the validation result.</param> public void ShowValidationFailure(ValidationElementResult validationFailure) { var errorTemplate = ValidationScope.GetValidationTemplate(validationFailure.Element); if (errorTemplate != null) { var adornerLayer = AdornerLayer.GetAdornerLayer(validationFailure.Element); if (adornerLayer != null) { validationFailure.Element.Loaded += Element_Loaded; FocusExtensions.Monitor(validationFailure.Element); var existingAdorner = validationFailure.Element.GetValue(ValidationErrorAdornerProperty) as TemplatedAdorner; if (existingAdorner != null) { // Update the message displayed in the existing adorner existingAdorner.DataContext = validationFailure.Result.Message; } else { var adorner = new TemplatedAdorner(validationFailure.Element, validationFailure.Result.Message, errorTemplate); adornerLayer.Add(adorner); validationFailure.Element.SetValue(ValidationErrorAdornerProperty, adorner); } } } }
/// <summary> /// Removes the validation failure. /// </summary> /// <param name="validationFailure">Information about the validation failure, including the element on which to show the validation and the validation result.</param> public void RemoveValidationFailure(ValidationElementResult validationFailure) { var adorner = validationFailure.Element.GetValue(ValidationErrorAdornerProperty) as Adorner; if (adorner != null) { var adornerLayer = AdornerLayer.GetAdornerLayer(validationFailure.Element); if (adornerLayer != null) { adornerLayer.Remove(adorner); validationFailure.Element.SetValue(ValidationErrorAdornerProperty, null); } } }