Hola:
si tengo esto en la vista

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:mate="http://mate.asfusion.com/"
    title="Employee Login" 
    currentState="{ model.state }">

    <mx:Script>
        <![CDATA[
            import com.cafetownsend.ui.presenters.LoginPresentationModel;
            
            [Bindable]
            public var model:LoginPresentationModel;
            
            private function login():void 
            {
                model.login( username.text, password.text );
            }
            
        ]]>
    </mx:Script>
    
    <!-- GUI ______________________________________________________________________ -->
    
    <mx:Form id="loginForm" defaultButton="{ loginBtn }">
          <mx:FormItem label="Username:" required="true">
               <mx:TextInput id="username"
                   text="{ model.clearFields }"
                   errorString="{ model.userNameErrorString }"/>
           </mx:FormItem>
           
           <mx:FormItem label="Password:" required="true">
               <mx:TextInput id="password" 
                   text="{ model.clearFields }"
                   errorString="{ model.passwordErrorString }"
                   displayAsPassword="true" />
           </mx:FormItem>
           
           <mx:FormItem direction="horizontal" verticalGap="15" paddingTop="20">
               <mx:Button id="loginBtn" label="Login" click="login()"/>
           </mx:FormItem>
    </mx:Form>
    
    <mx:Label htmlText="Username: Flex   Password: Mate" width="100%"/>
    
    <!-- States ______________________________________________________________________ -->
    
    <mx:states>
        <mx:State name="{ LoginPresentationModel.MESSAGE_STATE }">
            <mx:AddChild relativeTo="{loginForm}" position="before">
                <mx:Text text="Invalid login information, please try again"/>
            </mx:AddChild>
        </mx:State>
    </mx:states>

</mx:Panel>

[Bindable(Event="validationChange")]
public function get userNameErrorString():String
{
return _userNameErrorString;
}

Si tengo esto encapsulado en clase modelo

Código :

 [Bindable(Event="validationChange")]
        public function get passwordErrorString():String
        {
            return _passwordErrorString
        }

[Bindable(Event="validationChange")]
        public function get userNameErrorString():String
        {
            return _userNameErrorString;
        }
.-----

private function isValid( userName:String, password:String ):Boolean
        {
         (A)  _userNameErrorString = ( userName != null && userName != "" ) ? "" : "Username is a required field.";
          (B)  _passwordErrorString = ( password != null && password != "" ) ? "" : "Password is a required field.";
            
           (C) dispatchEvent( new Event( "validationChange" ) );
            
           (D) return ( userName != null && userName != "" && password != null && password != ""  );
        }




al escribir el nombre y el usuario en la vista, se ejecuta inmediatamente isValid??? o no??
es decir la sentencia siguie asi

C A B D o es asi A B C D

como se ejecuta realmente ??