             {
                 v.removeEventListener(ValidationResultEvent.VALID, handleItemValidationEvent);
                 v.removeEventListener(ValidationResultEvent.INVALID, handleItemValidationEvent);
+                v.removeEventListener("validChanged", handleItemValidationEvent);
             }
             
             errorTipManager.unregisterValidator(v as Validator);

            if (_target)
            {
                _target.removeEventListener(Event.CLOSE, handleTargetRemovedFromStage);
            }

            bindTargetProperty(v, property);

    public class ValidationHelper extends LifecycleObject
    {
        
        
        private var _isValid:Boolean = true;

        /** isValid indicates whether this ValidationHelper as a whole is
         * valid. This is also bound to the target.property (if provided)
         */
        [Bindable("validChanged")]
        public function get isValid():Boolean
        {
            return _isValid;
        }

        /**
         * @private
         */
        public function set isValid(value:Boolean):void
        {
            _isValid = value;
            // propagate a validation changed event through our target view
            target.dispatchEvent(new FlexEvent("validChanged",true,true));
        }

        
        public function ValidationHelper(vals:Array=null, target:IEventDispatcher=null, property:String=null, errorTipManager:ErrorTipManager=null)
        {
