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 ];
}

問題は、カスタム メニュー項目が表示されず、常に標準のフラッシュ コンテキスト メニューが表示されることです。

ここに画像の説明を入力

何が欠けていますか?どうすればこれをトラブルシューティングできますか? ありがとうございました。

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 に答える