Flex - Spark - Как снять шкуру только с одной части контейнера?

Как может оболочка разработчика только ОДНОЙ части компонента Flex без необходимости переписывать всю визуализацию этого компонента?

В ArcGIS Flex Viewer (3.0) от ESRI есть контейнер 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>

и присвоил этому скину свойство skinClass экземпляра WidgetTemplate:

<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.

Для пояснения: можно ли снять кожу только с одной части кожи, а другие части кожи и остальную часть контейнера визуализировать как обычно?

Мой основной источник - это страница Adobe по созданию скинов: О оболочках Spark


person BigSauce    schedule 08.11.2012    source источник


Ответы (1)


Он не отображается, потому что есть несколько частей оболочки com.esri.viewer.WidgetTemplate.as, которые не учтены в созданной вами обложке.

Если вы просто хотите изменить цвет метки заголовка в одном виджете, я рекомендую изменить цвет в обработчике creationComplete виджета печати вместо создания совершенно новой оболочки.

Также просмотрите com.esri.viewer.skins.WidgetTemplateSkin.mxml для получения дополнительных идей и / или изменения стиля глобального виджета.

person bradj    schedule 13.11.2012