開発者は、Flex コンポーネントのレンダリング全体を書き直すことなく、Flex コンポーネントの 1 つの部分だけにスキンを適用するにはどうすればよいでしょうか?
ESRI の ArcGIS Flex Viewer (3.0) には WidgetTemplate コンテナーがあり、コンテナー全体のレンダリングを担当することなく、一部だけをスキニングしたいと考えています。たとえば、このコンテナのスキン パーツをスキニングしたいだけです。
[SkinPart(required="false")]
public var header:Group;
ヘッダーの埋め込みラベルの色を好きな色に設定できるようにします。
したがって、PrintWidgetSkin.mxmlという次のスキンを作成しました。
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<!-- host component -->
<fx:Metadata>
[HostComponent("com.esri.viewer.WidgetTemplate")]
</fx:Metadata>
<!-- states -->
<s:states>
<s:State name="open" />
<s:State name="minimized" />
<s:State name="closed" />
<s:State name="disabled" />
<s:State name="normal" />
</s:states>
<s:Group id="header">
<s:Label color="0x000000" />
</s:Group>
</s:Skin>
WidgetTemplate インスタンスのskinClassプロパティをこのスキンに割り当てます。
<viewer:WidgetTemplate id="wTemplate"
width="345" height="285"
minWidth="345"
minHeight="285"
styleName="fontstyle"
accentColor="0x33FF66"
color="0x33FF66"
skinClass="widgets.Print.PrintWidgetSkin">
</viewer:WidgetTemplate>
ただし、この skinClass が割り当てられている場合、コンテナーはまったく表示されません。
明確にするために、1 つのスキン パーツだけをスキンし、他のスキン パーツとコンテナーの残りの部分を通常どおりにレンダリングすることはできますか?
私の主な情報源は、スキニングに関する Adobe のページです: About Spark Skins