 
     /**
      *  @private
+     *  Content changed or in process of being changed.
      */
     private function textView_textInvalidHandler(event:Event):void
     {
-        textInvalid = true;
+        mx_internal::textInvalid = true;
+    }
+
+    /**
+     *  @private
+     *  Called when the RichEditableText dispatches a 
+     *  'FlexEvent.UPDATE_COMPLETE' event in response to validation being
+     *  completed.  At this point, the textFlow is composed and the text
+     *  can be extracted from the textFlow, if needed.
+     */
+    protected function textView_updateCompleteHandler(event:Event):void
+    {
+        // This handles the case where text or content is initially set and
+        // no editing operations were done.  Since no editing operations
+        // were done, a change event wasn't dispatched to trigger any bindings
+        // on text or content.  The alternative is to let the RichEditableText
+        // damageHandler dispatch for every updateDisplayList but that seems
+        // much more expensive since the text may still be valid.
+        if (!useTextFlowForContent)
+        {
+            useTextFlowForContent = true;
+            dispatchEvent(new Event("change"));
+       }
     }
 }
 

        // to extract the text from the TextFlow.
        // That's too expensive for an TextArea,
        // which might have a lot of leaf nodes.
        
        // Update our storage variable for the content.
		_content = textView.content;
        textInvalid = true;

		// Redispatch the event that came from the RichEditableText.
		dispatchEvent(event);
	}


		if (instance == textView)
		{
			// In default.css, the TextArea selector has a declaration
			// for lineBreak which sets it to "toFit".  It needs to be on
			// TextArea rather than RichEditableText so that if changed later it
			// will be inherited.

			textView.heightInLines = 10;
			textView.multiline = true;
            textView.autoSize = false;
