2011-06-07 21 views
5

SDK 4.1 kullanımı Özel bir kaplama bileşeninin özel özelliklerine özel bir kaplamadan erişebildim. Şu anda çalışmakta olduğum proje SDK 4.5 gerektirir ve özelliklerine erişemiyorum. İşte bir örnek:Ciltleme sırasında ana bilgisayar özelliğine erişme - Flex 4.5, SDK 4.5

Özel Düğme Bileşeni

<?xml version="1.0" encoding="utf-8"?> 
<s:ButtonBase xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      skinClass="components.skins.ButtonIcon_Skin" 
      > 
    <fx:Declarations> 
     <fx:String id="iconCustom" /> 
    </fx:Declarations> 
</s:ButtonBase> 

kod ipucu hostComponent.iconCustom gösterir ama sonra hata veriyor

<?xml version="1.0" encoding="utf-8"?> 
<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:fb="http://ns.adobe.com/flashbuilder/2009" 
      minWidth="21" minHeight="21" 
      alpha.disabled="0.5"> 
    <fx:Metadata>[HostComponent("components.ButtonIcon")]</fx:Metadata> 

... 

    <s:Label id="test" {hostComponent.iconCustom}" 
      horizontalCenter="0" bottom="10" /> 

</s:SparkButtonSkin> 

Özel Düğme Cilt:

Access of possibly undefined property iconCustom through a reference with static type spark.components.supportClasses:ButtonBase. ButtonIcon_Skin.mxml 

cevap

8

Sıradan bir Skin ile bu SparkButtonSkin yerine ve sadece iyi olacak: Eğer SparkButtonSkin kullanmak istiyorsanız

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark"> 

    <fx:Metadata> 
     [HostComponent("components.ButtonIcon")] 
    </fx:Metadata> 

    <s:states> 
     <s:State name="disabled" /> 
     <s:State name="down" /> 
     <s:State name="over" /> 
     <s:State name="up" /> 
    </s:states> 

    <s:Label text="test {hostComponent.iconCustom}" 
      horizontalCenter="0" bottom="10" /> 

</s:Skin> 
+0

bir elmassın. Bir tedavi yaptı. – Trist

+1

'' kullanımı da derleme hatalarını siler. Ancak, her iki çözümün de düğme çubuğunda belirlediğim görüntüyü gösteremiyorum ('' bu görüntüyü korur. Neden olmasın). – ggkmath

+0

Neden? Burada neden yok. SparkButtonSkin'e ya da başka bir şeye ihtiyacım varsa ne olur? Daha fazla açıklama alabilir miyiz? Cevapları eski biliyorum, ama işte yaptığımız şey bu değil mi? – deltree

2

Diğer bir seçenek, sadece fiili hostComponent için döküm

(hostComponent as ButtonIcon).iconCustom 

veya

bağlam:

Özel Düğme Cilt

<?xml version="1.0" encoding="utf-8"?> 
<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:fb="http://ns.adobe.com/flashbuilder/2009" 
      minWidth="21" minHeight="21" 
      alpha.disabled="0.5"> 
    <fx:Metadata>[HostComponent("components.ButtonIcon")]</fx:Metadata> 

... 

    <s:Label id="{(hostComponent as ButtonIcon).iconCustom}" 
      horizontalCenter="0" bottom="10" /> 

</s:SparkButtonSkin> 
+0

Bu oyuncuyu eklerseniz, derleme hatası gider, ancak "Veri bağlama" atamaları "hostComponent" olarak algılayamaz. Bu uyarı ile çalıştırabilirim, ancak hostComponent özelliklerinden elde ettiğim değerler – Tony

+0

Cevabınız için çok teşekkürler Tommy RIAstar'ın benim için çalışmadığını, SparkButtonSkin'in bir şekilde görüntü göstermesini istediğim için, cevabınız işe yaradı. – ggkmath