Même sans métadonnées [Style] sur la classe du composant, il semble que vous pouvez définir les propriétés CSS et ils seront disponibles en la peau. En tant que test, j'ai créé un habillage personnalisé et je l'ai attaché à SkinnableComponent, puis j'ai défini une propriété de couleur spéciale via CSS. Dans l'habillage, j'ai lié à "{getStyle ('specialColor')", et il a récupéré la valeur de la propriété que j'ai définie.
Tout ce que vous pourriez sacrifier en omettant les métadonnées est l'auto-complétion sur le CSS.
Mon code de test:
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>
fonctionne parfaitement, merci! – greggreg
Pouvez-vous faire cela sans avoir une peau? – HDave