<?xml version="1.0" encoding="utf-8"?> <!--Flex中如何利用dataDescriptor属性和isToggled()函数判断PopUpButton的下拉选项是否选中的例子PopUpButtonSelectableOptions.mxml--> <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:Script> <![CDATA[ import mx.controls.Alert; import mx.controls.Menu; import mx.events.FlexEvent; import mx.events.MenuEvent; private var _menu:Menu; protected function popUpButton_initializeHandler(event:FlexEvent):void { _menu = new Menu(); _menu.variableRowHeight = true; _menu.dataProvider = arr; _menu.addEventListener(MenuEvent.CHANGE,onMenuChange); popUpButton.popUp = _menu; } protected function onMenuChange(event:MenuEvent):void { switch(_menu.dataDescriptor.getType(event.item)){ case "check": if(_menu.dataDescriptor.isToggled(event.item)){ this.styleName = "redModal"; Alert.show("""+event.item.label+""was checked"); }else{ Alert.show("""+event.item.label+""was not checked"); this.styleName = "greenModal"; } break; } } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <fx:Array id="arr"> <fx:Object label="Option 1" type="check" toggled="true" /> <fx:Object label="Option 2" type="check" toggled="true" /> </fx:Array> </fx:Declarations> <fx:Style> @namespace s "library://ns.adobe.com/flex/spark"; @namespace mx "library://ns.adobe.com/flex/mx"; mx|PopUpButton { popUpStyleName: MyCustomPopUpStyleName; } .MyCustomPopUpStyleName { fontWeight: normal; textAlign: left; } .redModal { modalTransparencyColor: red; modalTransparency: 0.8; } .greenModal { modalTransparencyColor: haloGreen; modalTransparency: 0.8; } </fx:Style> <mx:PopUpButton id="popUpButton" label="Click to open..." openAlways="true" initialize="popUpButton_initializeHandler(event)" /> </s:Application>