Apache flex 如何在Flex中侦听渲染器调度的自定义事件?

Apache flex 如何在Flex中侦听渲染器调度的自定义事件?,apache-flex,renderer,datagridcolumn,Apache Flex,Renderer,Datagridcolumn,我遇到了以下问题:我已经为我的DataGridColumn实现了一个自定义头链接器。这个想法是在点击列标题时有一个下拉菜单。问题是我不知道如何添加侦听器或向呈现器传递变量,因为呈现器类是由类工厂实例化的 渲染器类: <?xml version="1.0"?> <!-- itemRenderers\dataGrid\myComponents\RendererDGHeader.mxml --> <mx:HBox xmlns:mx="library://ns.adobe.

我遇到了以下问题:我已经为我的DataGridColumn实现了一个自定义头链接器。这个想法是在点击列标题时有一个下拉菜单。问题是我不知道如何添加侦听器或向呈现器传递变量,因为呈现器类是由类工厂实例化的

渲染器类:

<?xml version="1.0"?>
<!-- itemRenderers\dataGrid\myComponents\RendererDGHeader.mxml -->
<mx:HBox xmlns:mx="library://ns.adobe.com/flex/mx" 
 xmlns:fx="http://ns.adobe.com/mxml/2009" 
 width = "100%"
>
<fx:Script>


// ...

// Event handler for the Menu control's change event.
        private function menuHandler(evt:MenuEvent):void  {
            //Alert.show("Label: " + evt.item.@label, "Clicked menu item");

            if (evt.item.@eventName == "typeLat"){
             typeIcon.load("assets/type_location.jpg"); 
             evt.item.toggled=true;
            //variable.setColumnType(myLabel.text, "type");  // how can I pass "variable" to this renderer?                
            } else if (evt.item.@eventName == "typeLng"){
             typeIcon.load("assets/type_location.jpg"); 
             evt.item.toggled=true;
            } else if (evt.item.@eventName == "typeTime"){
             typeIcon.load("assets/type_time.png"); 
              evt.item.toggled=true;
            }

            else if (evt.item.@eventName == "similarity"){
               dispatchEvent(new SimilarityEvent("selectSimilarity", null, null)); // how to listen to this event?
            }
        }



</fx:Script>

 <fx:Declarations>
    <fx:XML id="myMenuData">
        <root>
            <menuitem label="Select type..." eventName="copy">
                <menuitem label="Other..." eventName="typeOther"/>
                <menuitem type="separator"/>
                <menuitem label="Order" type="check" eventName="typeOther"/>
                <menuitem label="Range" type="check" eventName="typeOther"/>
                <menuitem label="Date/Time" type="check" eventName="typeTime"/>
                <menuitem label="Latitude" type="check" eventName="typeLat"/>
                <menuitem label="Longitude" type="check" eventName="typeLng"/>
            </menuitem>
            <menuitem label="Define similarity..." eventName="similarity"/>
            <menuitem type="separator"/>
            <menuitem label="Filter objects..." eventName="similarity"/>
            <menuitem label="Order" eventName="similarity">
                <menuitem label="Ascending" eventName="typeOther"/>
                <menuitem label="Descending" eventName="typeOther"/>
            </menuitem>
            <menuitem type="separator"/>
            <menuitem label="Remove" eventName="paste"/>
        </root>
    </fx:XML>
</fx:Declarations>



<mx:Label id="myLabel" click="showMenu();"/>
<mx:Image height="20" id = "typeIcon"/>

</mx:HBox>

将事件侦听器添加到控件(DataGrid)并使事件冒泡,我们将非常感谢您提供的任何帮助

            var newColumn:DataGridColumn = new DataGridColumn(); 
            newColumn.dataField = attr;
            newColumn.headerText = attr;
            newColumn.sortable = false;
            newColumn.editable = false;
            newColumn.draggable = false;
            newColumn.headerRenderer = new ClassFactory(newviews.RendererDataHeader);
            cols.push(newColumn);