【问题标题】:Flex: Menubar, menu clickFlex:菜单栏,菜单点击
【发布时间】:2010-03-11 09:21:51
【问题描述】:

我不知道为什么,但我看到菜单栏上的 itemclick 事件不会触发,除非您单击子项。

什么是处理对顶层且没有子菜单项的菜单项的点击的干净方法。

例如,我想在单击 MenuItem B 时触发一个事件。

<?xml version="1.0"?>
<!-- menus/MenuBarControl.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >

    <mx:MenuBar id="myMenuBar" labelField="@label" itemClick="{itemClick(event)}" >
        <mx:XMLList>
            <menuitem label="MenuItem A">
                <menuitem label="SubMenuItem A-1"/>
                <menuitem label="SubMenuItem A-2"/>
            </menuitem>
            <menuitem label="MenuItem B"/>
        </mx:XMLList>
    </mx:MenuBar>
</mx:Application>

【问题讨论】:

    标签: apache-flex menu click menubar


    【解决方案1】:

    猜猜这会有所帮助,

    protected function myMenuBar_clickHandler(event:MouseEvent):void
            {
                // TODO Auto-generated method stub
                stackIndex=event.target.data.@index;
            }
    
    protected function myMenuBar_itemClickHandler(event:MenuEvent):void
            {
                // TODO Auto-generated method stub
                stackIndex=event.item.@index;
            }
    

    以下菜单栏的F,

    <mx:MenuBar id="myMenuBar" labelField="@label" click="myMenuBar_clickHandler(event)" itemClick="myMenuBar_itemClickHandler(event)" >   
        <mx:XMLList>   
            <menuitem label="MenuItem A" index="0">   
                <menuitem label="SubMenuItem A-1" index="0-0"/>   
                <menuitem label="SubMenuItem A-2" index="0-1"/>   
            </menuitem>   
            <menuitem label="MenuItem B" index="1"/>   
        </mx:XMLList>   
    </mx:MenuBar>  
    

    在这里我还添加了一个属性“索引”。作为 XML,我们可以在其中添加任何元素,除了一些关键字。

    “ItemClick”事件将处理子项,“Click”将处理顶级菜单栏项(父项)。

    希望这会有所帮助。

    问候, 普拉卡什

    【讨论】:

      【解决方案2】:

      此行为是设计使然。将其视为浏览器中的菜单栏:单击文件、编辑、查看等顶级项目仅显示弹出窗口,它们不会触发任何操作。

      来自livedocs page for MenuBar

      MenuBar 控件定义了一个水平的顶级菜单栏,其中包含一个或多个菜单项。单击顶级菜单项会打开一个弹出子菜单,该子菜单是 Menu 控件的一个实例。

      MenuBar 控件的顶级菜单栏通常始终可见。它不能用作弹出菜单。当用户使用鼠标或键盘选择它们时,会弹出各个子菜单。

      如果您必须在顶级项目单击上执行某些操作,请在 MenuBar 上监听 click 事件并遍历 event.targetparent 链,搜索默认项目渲染器 MenuBarItem对于 MenuBar 的顶级项目

      【讨论】:

        【解决方案3】:

        flex 开箱即用的菜单栏有很多限制。例如,我不能有像这样的嵌套子菜单 顶部菜单 - 1 级菜单 - 2级菜单 - 3级菜单...... 为了解决这个问题,需要在每个子菜单中添加一个额外的菜单,这确实很痛苦。

        【讨论】:

          猜你喜欢
          • 2015-07-22
          • 1970-01-01
          • 2011-08-12
          • 1970-01-01
          • 1970-01-01
          • 2018-12-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多