2010-05-28 9 views
0

J'ai une liste avec un itemrenderer. Quand je mets un bouton dans l'itemrenderer je ne peux pas interagir avec lui. Si je reviens sur le bouton, le survol de l'élément de liste est déclenché mais pas le survol du bouton. Je ne peux pas non plus cliquer sur le bouton. Vous pouvez voir ci-dessous J'ai un ensemble d'événements de clic dans l'itemrenderer et il n'est pas appelé lorsque je clique sur l'application. Dois-je remplacer le survol et cliquer sur les méthodes d'itemrender? Pourquoi est-ce une telle peine de mettre un bouton dans un itemrenderer? J'ai dû louper quelque chose. Merci.Flex Impossible d'interagir avec le bouton dans itemrenderer

<!---From main.mxml--> 
<s:List width="100%" borderVisible="false" 
    itemRenderer="itemRenderers.data_resultLayersRenderer" 
    dataProvider="{resultsLayers}"/> 

<!---From itemRenderes--> 
<s:ItemRenderer 
xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx" 
xmlns:skins="skins.*" autoDrawBackground="true"> 

<fx:Script> 
    <![CDATA[ 
     import mx.controls.Alert; 
     [Bindable] 
     [Embed('images/add2.png')] 
     public var addIcon:Class; 

     [Bindable] 
     [Embed('images/delete2.png')] 
     public var deleteIcon:Class; 


     protected function iconbutton1_clickHandler(event:MouseEvent):void 
     { 
      Alert.show('test'); 
     } 

    ]]> 
</fx:Script> 

<s:states> 
    <s:State name="normal"/> 
    <s:State name="hovered"/> 
</s:states> 

<s:layout> 
    <s:VerticalLayout/> 
</s:layout> 

<s:transitions> 
    <mx:Transition toState="hovered"> 
     <s:Animate target="{item}" duration="200"> 
      <s:SimpleMotionPath property="borderWeight" /> 
     </s:Animate> 
    </mx:Transition> 
    <mx:Transition fromState="hovered"> 
     <s:AnimateColor target="{item}" duration="200"/> 
    </mx:Transition> 
</s:transitions> 

<mx:HBox id="item" verticalAlign="middle" width="100%" height="100%" 
     useHandCursor="true" buttonMode="true" mouseChildren='false' 
     paddingTop="5" paddingBottom="5"> 
     <s:Label id="subMenuItemName" text="{data.name}" 
       color="#000000" color.hovered="#ff9a15" 
       fontSize="12" fontWeight.hovered="bold" 
       fontFamily="Georgia"/> 
     <s:Label text="{'(' + data.result + ')'}" 
      id="subMenuItemDescription" 
      color="#333333" color.hovered="#ff9a15" 
      fontSize="10"/> 
    <skins:IconButton 
       label="Remove" 
       icon="{deleteIcon}" 
       skinClass="skins.iconButtonSkin" 
       color="#ffffff" 
       /> 
    <skins:IconButton 
     label="Add" 
     icon="{addIcon}" 
     skinClass="skins.iconButtonSkin" 
     color="#ffffff" 
     click="iconbutton1_clickHandler(event)" 
     /> 
</mx:HBox> 

Répondre

2

On dirait que vous avez mouseChildren ensemble à Fase dans votre article renderer. En définissant cette propriété sur false, vous empêchez les événements de souris de se propager aux enfants d'un conteneur. Essayez de le définir sur true et voyez ce qui se passe.

+0

C'était tout. Merci Monsieur! – mrjrdnthms

Questions connexes