             current.removeEventListener(FlexEvent.HIDE, visibilityChangedHandler, false);
             current.removeEventListener(FlexEvent.SHOW, visibilityChangedHandler, false);
             
-            if (current.designLayer)
-            {
-                current.designLayer.removeEventListener("layerPropertyChange", 
-                    designLayer_layerPropertyChangeHandler, false);
-            }
-            
             current = current.parent as IVisualElement;
+        }
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden event handlers: UIComponent
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     */
+    override protected function layer_PropertyChange(event:PropertyChangeEvent):void
+    {
+        super.layer_PropertyChange(event);
+        
+        if (event.property == "effectiveVisibility")
+        {
+            effectiveVisibilityChanged = true;
+            invalidateProperties();
         }
     }
     

    
    //--------------------------------------------------------------------------
    //
    //  Overridden methods: UIComponent
    //
    //--------------------------------------------------------------------------

    {
        effectiveVisibilityChanged = true;
        invalidateProperties();
    }
    
    /**
