以交互方式从comboBox中删除元素

时间:2011-03-20 04:09:30

标签: actionscript-3 flex combobox flex4

我正在使用一个火花组合框(我非常喜欢)。我想做的是允许用户从cb列表中删除元素。为此,我想我会在每个cb元素旁边添加一个删除按钮,使用自定义(并且非常简单)的itemRenderer。

一切似乎都没问题 - 我可以看到一个按钮,按钮似乎是互动的(即如果你将鼠标悬停在它上面,它的颜色肯定会改变)。但是,当我点击按钮时,似乎无法触发任何事件。我查看了组件的代码,但没有被任何天才的想法所照亮。我想知道是否有人知道如何拍摄按钮(我可以从那里拿走......)。这里有一些示例代码来解释发生了什么......

谢谢大家!


<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

    <fx:Declarations>
        <s:ArrayList id="dp">
            <fx:Object description="aaaa" />
            <fx:Object description="bbbb" />
            <fx:Object description="cccc" />
            <fx:Object description="dddd" />
        </s:ArrayList>
    </fx:Declarations>

    <s:ComboBox id="cb" width="200" x="20" y="20"
                dataProvider="{dp}" labelField="description"
                itemRenderer="ComboBoxItemRenderer.symbolComboBoxRenderer"/>

</s:Application>

和项目渲染器(注意:我尝试了捕获阶段的开启和关闭,但没有运气。我也尝试了更高的优先级,但也没有运气。)

<?xml version="1.0" encoding="utf-8"?>
<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" width="100%"
                creationComplete="itemrenderer1_creationCompleteHandler(event)">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import mx.utils.StringUtil;

            import spark.components.ComboBox;

            override public function set data(value:Object):void  
            {
                super.data = value;
            }

            protected function button1_clickHandler(event:MouseEvent):void
            {
                trace("pressed button");
            }

            protected function itemrenderer1_creationCompleteHandler(event:FlexEvent):void
            {
                bt.addEventListener(MouseEvent.CLICK, button1_clickHandler, true, 50);
            }

        ]]>
    </fx:Script>

    <s:HGroup width="100%">
        <s:Label id="labelDisplay" left="1" top="5" bottom="5" width="100%"/>
        <s:Button id="bt" width="7" height="7"/>
    </s:HGroup>
</s:ItemRenderer>

1 个答案:

答案 0 :(得分:1)

好吧,想通了 - 重写item_mouseDownHandler并检查目标类型似乎可以解决问题。