Hola,
estoy haciendo una Tree personalizado, para el cual también he definido mis propios itemRenderer.
Mi problema es que me gustaría definir un estilo (labelStyleName) en mi arbol que sirva para definir los estilos a plicar a los itemRenderer. A este estilo labelStyleName, se le asignaría en la hoja de estilos el nombre de otro estilo.
Es decir algo así:

Código ActionScript :

//Estilo a aplicar a mi arbol
CheckBoxImagesTree
{
   backgroundColor:        #fcfcfe;/*#ECE9D8;*/
   selection-color:      #fcfcfe;/*#ECE9D8;*/
   border-style:         none;
   disclosureOpenIcon:    Embed(source="/assets/open1.gif");
   disclosureClosedIcon:    Embed(source="/assets/closedDefault.gif");
   label-style-name:      labelTree;
}

//El estilo que se aplicaria a la label de un itemRenderer de mi arbol
.labelTree{
   label-background:   true;
   label-background-color: #FFFFFF;
   label-background-selected-color: #316AC5;
   label-color:         #FF0000;         
   label-selected-color:   #FFFFFF;
}


Para eso he definido el estilo en la clase arbol y he sobreescrito el método styleChanged para que avise a los hijos de este

Código ActionScript :

   [Style(name="labelStyleName", type="String", inherit="no")]

   public class CheckBoxImagesTree extends Tree
        {

         // Sobreescribo el metodo styleChanged() para detectar los cambios en el estilo labelStyleName
       override public function styleChanged(styleProp:String):void 
       {
          super.styleChanged(styleProp);
         // Miramos si cambio el estilo
         if (styleProp=="labelStyleName")
         {
            //Propago el cambio de estilo a los hijos
            notifyStyleChangeInChildren(styleProp, true);
            return;
         }
      }
         }


Por ultimo en el itemRenderer he redefinido el métod styleChanged para que actualize el estilo si hay algun cambio en el padre. Y en la clase updateDisplayList, para que se pinte conforme a estos estilos:

Código ActionScript :

       // Sobreescribo el metodo styleChanged() para detectar los cambios en el estilo labelStyleName
      override public function styleChanged(styleProp:String):void 
      {
         // Miramos si cambió el estilo
         if (styleProp=="labelStyleName")
         {
            //como hubo cambio hay que actualizar el pintado
            bStypePropChanged=true;
            var nameStyleName: Object = ListBase(owner).getStyle("labelStyleName");
            labelStyleName = new CSSStyleDeclaration();
            labelStyleName.setStyle("labelBackground",nameStyleName);
            labelStyleName.setStyle("labelBackgroundSelectedColor",nameStyleName);
            labelStyleName.setStyle("labelSelectedColor",nameStyleName);
            labelStyleName.setStyle("labelBackgroundColor",nameStyleName);
            labelStyleName.setStyle("labelColor",nameStyleName);

            invalidateDisplayList();
            return;
         }
      }

      //Ajustamso el pintado para que pinte los checkBox e iconos si tiene que hacerlo
      override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
      {
         super.updateDisplayList(unscaledWidth, unscaledHeight);

   
         //Si el estilo ha cambiado
         if (bStypePropChanged && data && parent)
         {
            if (labelStyleName.getStyle("labelBackground")){
                 super.label.background = true;
                 if (ListBase(owner).isItemSelected(data)){
                    //super.label.setStyle("backGroundColor", this.getStyle("labelStyleName"));
                    super.label.backgroundColor = labelStyleName.getStyle("labelBackgroundSelectedColor");
                    super.label.textColor = labelStyleName.getStyle("labelSelectedColor");
                 }
                 else{
                    super.label.backgroundColor = labelStyleName.getStyle("labelBackgroundColor");
                    super.label.textColor = labelStyleName.getStyle("labelColor");
                 }   
         }
         else{
            super.label.background = false;
         }
               }


El problema es que el itemRenderer no percibe el cambio de estilo en el padre y por tanto le llegan null, los campos de labelStyleName.

En resumen alguien me puede decir si es posible hacer lo que quiero, o tengo q definir los estilos para el arbol y luego usar estos desde el itemRenderer.
Gracias