0

我有一个自定义 DataGrid,我想向其中添加一个自定义菜单:

public function MyCustomDataGrid() {
    super();
    init();
}

private function init():void {
    var _copyElementMenuItem:ContextMenuItem = new ContextMenuItem("Copier Donnée");
    _copyElementMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, handleCopyData);

    this.contextMenu = new ContextMenu();
    contextMenu.hideBuiltInItems();
    contextMenu.customItems = [ _copyElementMenuItem ];
}

问题是我的自定义菜单项从未显示,我总是以标准的 Flash 上下文菜单结束:

在此处输入图像描述

我错过了什么?我该如何解决这个问题?谢谢你。

4

1 回答 1

1

它对我有用。看看我的代码。

在此处输入图像描述

//应用

<?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" xmlns:custommenu="com.custommenu.*">
<fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;

        [Bindable]private var collection:ArrayCollection = new ArrayCollection([
            {field01:"field01", field02:"field02"},
            {field01:"field01", field02:"field02"}
        ]);

    ]]>
</fx:Script>
<s:VGroup x="20" y="20">
    <custommenu:MyCustomDataGrid 
        dataProvider="{collection}" 
        width="200" height="100">
        <custommenu:columns>
            <s:ArrayList>   
                <s:GridColumn dataField="field01" headerText="Field 1"/>
                <s:GridColumn dataField="field02" headerText="Field 2"/>
            </s:ArrayList>                  
        </custommenu:columns>         
    </custommenu:MyCustomDataGrid>
</s:VGroup>
</s:Application>

//MyCustomDataGrid

<?xml version="1.0" encoding="utf-8"?>
<s:DataGrid 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="400" height="300" 
        creationComplete="init()">
<fx:Script>
    <![CDATA[
        import mx.controls.Alert;

        protected function init():void
        {
            var _copyElementMenuItem:ContextMenuItem = new ContextMenuItem("Copier Donnée");
            _copyElementMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, handleCopyData);

            this.contextMenu = new ContextMenu();
            contextMenu.hideBuiltInItems();
            contextMenu.customItems = [ _copyElementMenuItem ];
        }

        private function handleCopyData(evt:ContextMenuEvent):void 
        {
            Alert.show("Hello!");
        }

    ]]>
</fx:Script>

</s:DataGrid>
于 2013-03-29T14:37:37.583 回答