Domanda

esiste un modo per creare un valore css personalizzato per un componente e averlo a disposizione della classe pelle che componente sta usando? per esempio, se io definisco questo in un file CSS:

s|Panel{
  skinClass: ClassReference("PanelSkin");
  myCustomValue: #CCCCFF;
}

c'è un modo per rendere myCustomValue disponibile nel PanelSkin?

È stato utile?

Soluzione

Anche senza [Stile] metadati sulla classe del componente, a quanto pare è possibile impostare le proprietà CSS e saranno disponibili nella pelle. Come prova, ho creato una skin personalizzato e attaccato a SkinnableComponent, e quindi impostare una proprietà 'speciale-color' tramite CSS. Nella pelle, ho tenuto a "{getStyle ( 'Specialcolor')", e recuperato il valore della proprietà che ho impostato.

Tutto quello che potrebbe essere sacrificare omettendo i metadati è il completamento automatico del CSS.

Il mio codice di prova:

SkinTest.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Style>
    @namespace s "library://ns.adobe.com/flex/spark";
    @namespace mx "library://ns.adobe.com/flex/halo";

    s|SkinnableComponent {
        skin-class: ClassReference("skins.CustomSkin");
        special-color: blue;
    }
</fx:Style>

<s:SkinnableComponent width="300" height="300"/>
</s:Application>

CustomSkin.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/halo" width="400" height="300">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<s:Rect left="0" top="0" right="0" bottom="0">
    <s:fill>
        <s:SolidColor color="{getStyle('specialColor')}"/>
    </s:fill>
</s:Rect>
</s:SparkSkin>

Altri suggerimenti

È necessario utilizzare i metadati [Stile], ecco più informazioni: tag metadata Stile

È necessario definire ospitate classe del componente nel file MXML pelle. [HostComponent ( "your.component.class")]

Dopo questo, sarete in grado di ottenere qualsiasi stile definito nel file CSS utilizzando hostComponent.getStyle ( "myCustomValue")

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top