     //---------------------------------- 
     
     [SkinPart(required="true")]
-
-    /**
-     * A skin part that defines the vertical scrollbar.
+    [Bindable]
+    
+    /**
+     *  A skin part that defines the vertical scrollbar.
+     * 
+     *  This property should be considered read-only, it's only
+     *  set by the FxScroller's skin.
+     * 
+     *  This property is Bindable.
      */
     public var verticalScrollBar:FxVScrollBar;
-    
+
+
     //----------------------------------
     //  viewport - default property
     //----------------------------------    
     
     private var _viewport:IViewport;
     
-    [Bindable]
+    [Bindable(event="viewportChanged")]
     
     /**
      *  The viewport component to be scrolled.
      * 
-     *  <p>The viewport is added to the FXScroller component's skin 
+     *  <p>
+     *  The viewport is added to the FXScroller component's skin 
      *  which lays out both the viewport and scrollbars.
      * 
      *  When the viewport property is set, the viewport's clipContent property is 

     */
    override protected function keyDownHandler(event:KeyboardEvent):void
    {
        var vp:IViewport = viewport;
        if (!vp)
            return;
            
        // TBD: is special handling for textfields needed here, as in mx.core.Container?
    
        if (verticalScrollBar && verticalScrollBar.visible)
        {

    {
        if (value == _viewport)
            return;
            
        uninstallViewport();
        _viewport = value;
        installViewport();
        dispatchEvent(new Event("viewportChanged"));
    }

    private function installViewport():void
