Flex Не может взаимодействовать с кнопкой в ​​itemrenderer - PullRequest
0 голосов
/ 28 мая 2010

У меня есть список с itemrenderer. Когда я помещаю кнопку в itemrenderer, я не могу с ней взаимодействовать. Если я нажимаю кнопку, происходит переключение элемента списка, но не нажатие кнопки. Я тоже не могу нажать на кнопку. Вы можете видеть ниже, у меня есть событие click, установленное в itemrenderer, и оно не вызывается при нажатии, когда я запускаю приложение. Должен ли я переопределить опрокидывание и щелкнуть методы itemrender? Почему такая боль в том, чтобы положить кнопку в 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>

1 Ответ

2 голосов
/ 28 мая 2010

Похоже, вы установили mouseChildren в свой рендерер предметов. Установив для этого свойства значение false, вы предотвращаете распространение любых событий мыши на дочерние элементы контейнера. Попробуйте установить его в true и посмотреть, что произойдет.

...