     //
     //--------------------------------------------------------------------------
     
-    [Bindable]
+    /**
+     *  @private
+     *  Storage for the data property.
+     */
+    private var _data:Object;
+    
+    [Bindable("dataChange")]
+
+    /**
+     *  The <code>data</code> property lets you pass an arbitrary object
+     *  to be used in a custom skin of the button.
+     * 
+     *  When a skin defines the optional part <code>labelField</code> then
+     *  a string representation of <code>data</code> will be pushed down to
+     *  that part's <code>text</code> property.
+     *
+     *  The default skin uses this mechanism to render the <code>data</code>
+     *  as the button label.  
+     * 
+     *  <p>When FxButton is used as an item renderer, the <code>data</code>
+     *  property will be set to the item value.</p>
+     *
+     *  <p>The <code>label</code> property is a <code>String</code> typed
+     *  facade of this property.  This property is bindable and it shares
+     *  the "dataChange" event with the <code>label</code> property.</p>
+     * 
+     *  @default null
+     *  @eventType dataChange
+     *  @see #label
+     *  @see mx.core.IDataRenderer
+     */
     public function get data():Object
     {
-        return content;
-    }
-    
+        return _data;
+    }
+
+    /**
+     *  @private
+     */
     public function set data(value:Object):void
     {
-        content = value;
-    }
-
-    [Bindable("labelChanged")]
+        _data = value;
+
+        // Push to the optional labelField skin part
+        if (labelField)
+            labelField.text = label;
+        dispatchEvent(new Event("dataChange"));
+    }
+
+    [Bindable("dataChange")]
     /**
      *  Text to appear on the FxButton control.
-     *
+     * 
      *  <p>If the label is wider than the FxButton control,
      *  the label is truncated and terminated by an ellipsis (...).
      *  The full label displays as a tooltip

     *  If you have also set a tooltip by using the <code>tooltip</code>
     *  property, the tooltip is displayed rather than the label text.</p>
     *
     *  @default ""
     */
    public function set label(value:String):void
    {
        content = value;
        dispatchEvent(new Event("labelChanged"));
        
        if (labelField)
            labelField.text = label;
    }
    /**
     *  @private
     */
    public function get label():String          
    {
        return (content != null) ? content.toString():"";
    }
    
    [Bindable]
    public var content:*

    // -----------------------------------------------------------------------
    //
    // Public properties defining the state of the button.


[DefaultTriggerEvent("click")]

[DefaultProperty("label")]

[IconFile("FxButton.png")]

