using System;
using System.Windows;
using System.Windows.Data;

namespace ValidationLibrary
{
    public class ValidationBinding : BindingDecoratorBase
    {
        public ValidationBinding() {}

        public ValidationBinding(PropertyPath path, UpdateSourceTrigger trigger, IValueConverter converter)
        {
            Path = path;
            UpdateSourceTrigger = trigger;
            Converter = converter;
        }

        public override object ProvideValue(IServiceProvider pProvider)
        {
            base.NotifyOnValidationError = true;
            var lValidator = new AttributeValidator();
            base.ValidationRules.Add(lValidator);

            object lResult = base.ProvideValue(pProvider);

            lValidator.ExpressionToValidate = lResult as BindingExpression;

            return lResult;
        }
    }
}