复选框未在下拉项中选中 itemrendere flex

Checkbox not checked in dropdown itemrendere flex

我有 DropDownlist,它有如下的 Itermenderer:

<s:DropDownList dataProvider="{testList}" labelField="test" 
                        itemRenderer="DropDownSelectRenderer"/>

ItemRenderer:

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

<fx:Script>
        <![CDATA[

            protected function onChange(event:Event):void
            {
                trace("checked");
            }

        ]]>
    </fx:Script>

<s:CheckBox id="chkBox" selected="{data.selected}" change="onChange(event)"  />
<s:Label id="lblCon" fontSize="14" text="{data.test}"  />

</s:ItemRenderer>

我想要 CheckBox chkBox 更改和标签 lblCon 单击事件,
但是当我打开 Dropdown 并尝试单击 CheckBox 时,DropDown 被关闭并且 CheckBox 未被选中。

感谢任何帮助。

您可能想要使用 PopUpButton,如下所示:

<?xml version="1.0"?>
<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">
<fx:Script><![CDATA[
    import mx.collections.ArrayCollection;

    [Bindable]
    private var testList:ArrayCollection = new ArrayCollection([
        {"test":"Test A", "selected": false},
        {"test":"Test B", "selected": true},
        {"test":"Test C", "selected": false},
        {"test":"Test D", "selected": false}
    ]);
    protected function closeButtonClickHandler(event:MouseEvent):void {
        testPopUp.close();
    }
    ]]></fx:Script>
<mx:PopUpButton id="testPopUp"
                width="150">
    <mx:popUp>
        <mx:VBox width="150" backgroundColor="0xd3d3d3">
            <mx:List id="list"
                     dataProvider="{testList}"
                     height="{testList.length * 25}"
                     width="100"
                     borderStyle="none">
                <mx:itemRenderer>
                    <fx:Component>
                        <mx:CheckBox height="20">
                            <fx:Script>
                                <![CDATA[
                                override public function set data(value:Object):void
                                {
                                    super.data = value;
                                    if (value && value.test)
                                    {
                                        super.label = value.test;
                                        super.selected = value.selected;
                                    }
                                }
                                ]]>
                            </fx:Script>
                        </mx:CheckBox>
                    </fx:Component>
                </mx:itemRenderer>
            </mx:List>
            <mx:Button label="Close"
                       click="closeButtonClickHandler(event)"/>
        </mx:VBox>
    </mx:popUp>
</mx:PopUpButton>
</s:Application>