76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
using Microsoft.Xaml.Behaviors;
 | 
						|
using System.Collections.ObjectModel;
 | 
						|
using System.Windows;
 | 
						|
using System.Windows.Controls;
 | 
						|
 | 
						|
namespace DM_Weight.Commons.ValidatRules
 | 
						|
{
 | 
						|
    public class ValidationErrorMappingBehavior : Behavior<FrameworkElement>
 | 
						|
    {
 | 
						|
        #region Properties
 | 
						|
 | 
						|
        public static readonly DependencyProperty ValidationErrorsProperty =
 | 
						|
            DependencyProperty.Register("ValidationErrors", typeof(ObservableCollection<ValidationError>),
 | 
						|
                typeof(ValidationErrorMappingBehavior), new PropertyMetadata(new ObservableCollection<ValidationError>()));
 | 
						|
 | 
						|
        public ObservableCollection<ValidationError> ValidationErrors
 | 
						|
        {
 | 
						|
            get { return (ObservableCollection<ValidationError>)this.GetValue(ValidationErrorsProperty); }
 | 
						|
            set { this.SetValue(ValidationErrorsProperty, value); }
 | 
						|
        }
 | 
						|
 | 
						|
        public static readonly DependencyProperty HasValidationErrorProperty = DependencyProperty.Register("HasValidationError",
 | 
						|
            typeof(bool), typeof(ValidationErrorMappingBehavior), new PropertyMetadata(false));
 | 
						|
 | 
						|
        public bool HasValidationError
 | 
						|
        {
 | 
						|
            get { return (bool)this.GetValue(HasValidationErrorProperty); }
 | 
						|
            set { this.SetValue(HasValidationErrorProperty, value); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Constructors
 | 
						|
 | 
						|
        public ValidationErrorMappingBehavior()
 | 
						|
            : base()
 | 
						|
        { }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Events & Event Methods
 | 
						|
 | 
						|
        private void Validation_Error(object sender, ValidationErrorEventArgs e)
 | 
						|
        {
 | 
						|
            if (e.Action == ValidationErrorEventAction.Added)
 | 
						|
            {
 | 
						|
                this.ValidationErrors.Add(e.Error);
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                this.ValidationErrors.Remove(e.Error);
 | 
						|
            }
 | 
						|
 | 
						|
            this.HasValidationError = this.ValidationErrors.Count > 0;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Support Methods
 | 
						|
 | 
						|
        protected override void OnAttached()
 | 
						|
        {
 | 
						|
            base.OnAttached();
 | 
						|
            Validation.AddErrorHandler(this.AssociatedObject, Validation_Error);
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void OnDetaching()
 | 
						|
        {
 | 
						|
            base.OnDetaching();
 | 
						|
            Validation.RemoveErrorHandler(this.AssociatedObject, Validation_Error);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |