<?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" > <fx:Declarations> <!--xml 方式将root不显示需要设置MenuBar的showRoot属性为false--> <fx:XML format="e4x" id="myMenuData"> <root > <menuitem label="MenuItem A" icon="myTopIcon"> <menuitem label="SubMenuItem A-1" enabled="False" fun="copy"/> <menuitem label="SubMenuItem A-2" fun="open"/> </menuitem> <menuitem label="MenuItem B" type="check" toggled="true"/> <menuitem label="MenuItem C" type="check" toggled="false" icon="myTopIcon"/> <menuitem type="separator"/> <menuitem label="MenuItem D" icon="myTopIcon"> <menuitem label="SubMenuItem D-1" type="radio" groupName="one"/> <menuitem label="SubMenuItem D-2" type="radio" groupName="one" toggled="true"/> <menuitem label="SubMenuItem D-3" type="radio" groupName="one"/> </menuitem> </root> </fx:XML> <!--使用xmlList数据源方式--> <fx:XMLList id="arr"> <menuitem label="MenuItem A" icon="myTopIcon"> <menuitem label="SubMenuItem A-1" enabled="False"/> <menuitem label="SubMenuItem A-2" eventName="copy"/> </menuitem> <menuitem label="MenuItem B" type="check" toggled="true"/> <menuitem label="MenuItem C" type="check" toggled="false" icon="myTopIcon"/> <menuitem type="separator"/> <menuitem label="MenuItem D" icon="myTopIcon"> <menuitem label="SubMenuItem D-1" type="radio" groupName="one"/> <menuitem label="SubMenuItem D-2" type="radio" groupName="one" toggled="true"/> <menuitem label="SubMenuItem D-3" type="radio" groupName="one"/> </menuitem> </fx:XMLList> </fx:Declarations> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.events.FlexEvent; import mx.events.MenuEvent; [Bindable] public var menuArray:Array = [ {label:"menuI",children:[ {label:"menuI-I",enabled:false}, {label:"menuI-II",enabled:true,type:"normal"} ] }, {label:"menuII",toggled:false}, {label:"menuIII",toggled:true}, ]; private function menuHandler(evt:MenuEvent):void { this.callLater(this[evt.item.@fun]); } private function open():void { Alert.show("call open command"); } private function copy():void { Alert.show("call copy command"); } ]]> </fx:Script> <mx:MenuBar id="myMenu" x="110" y="40" width="571" height="24" dataProvider="{myMenuData}" labelField="@label" itemClick="menuHandler(event)" showRoot="false" > </mx:MenuBar> </s:Application>