PopUpMenuButton 控件可创建一个 PopUpButton 控件,带有一个主子按钮和一个辅助子按钮。单击辅助(右)子按钮会下拉一个菜单,可通过 dataProvider 属性对其填充。与 Menu 和 MenuBar 控件不同,PopUpMenuButton 控件仅支持单级菜单。这就意味着此菜单不能包含级联子菜单。
PopUpMenuButton 控件的主子按钮表面可以包含文本标签、图标或者同时包含两者。当用户从下拉菜单中选择某个项目或单击 PopUpMenuButton 控件的主按钮时,该控件将调度 itemClick 事件。当用户单击该控件的主按钮时,该控件还会调度 click 事件。您可以自定义 PopUpMenuButton 控件的外观。
PopUpMenuButton 控件具有下列大小特征:
隐藏 MXML 语法
The <mx:PopUpMenuButton> tag inherits all of the tag
attributes of its superclass, and adds the following tag attributes:
<mx:PopUpMenuButton
Properties
dataDescriptor="instance of DefaultDataDescriptor"
dataProvider="undefined"
iconField="icon"
iconFunction="undefined"
labelField="label"
labelFunction="undefined"
showRoot="false|true"
Event
change=No default
/>
查看示例
样式为常见样式,或与特定主题关联。如果为常见样式,则可以用于任何主题。如果样式与特定主题关联,则只有应用程序使用该主题时才能使用该样式。
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
当按钮为 emphasized 时(例如,作为容器的默认按钮时)用作按钮外观的类的名称.
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
设置内部 TextField 的 antiAliasType 属性.
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
设置用于表示 Flex 控件文本的内部 TextField 的 gridFitType 属性.
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
设置用于表示 Flex 控件文本的内部 TextField 的 sharpness 属性.
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
设置用于表示 Flex 控件文本的内部 TextField 的 thickness 属性.
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
将 labelPlacement 属性设置为 left 或 right 时,标签和图标之间的间隙.
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
一个布尔值,表示是启用 (true) 还是禁用 (false) 字距调整.
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
下拉菜单使用的 CSS 样式声明的名称。可以通过此属性控制下拉菜单的外观。默认值将 fontWeight 设置为 normal,并将 textAlign 设置为 left。
默认值为 "popUpMenu"。
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
在第一个 buttonDown 事件之后,以及相隔每个 repeatInterval 重复一次 buttonDown 事件之前,需要等待的毫秒数.
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
用户在按钮上按住鼠标时,buttonDown 事件之间相隔的毫秒数.
语言版本: ActionScript 3.0
产品版本: Flex 3
运行时版本: Flash9, AIR 1.1
将 labelPlacement 属性设置为 "top" 或 "bottom" 时,按钮的标签和图标之间的间隙.
dataDescriptor:IMenuDataDescriptor
数据描述符可以访问并处理数据提供程序中的数据。
如果要将此属性指定为 MXML 中的某个属性,则必须使用对数据描述符的引用,而不是描述符的字符串名称。为该属性使用下列格式:
<mx:PopUpMenuButton id="menubar" dataDescriptor="{new MyCustomDataDescriptor()}"/>
或者,您可以在 MXML 中将该属性指定为嵌套子标签,如下例所示:
<mx:PopUpMenuButton>
<mx:dataDescriptor>
<myCustomDataDescriptor>
</mx:dataDescriptor>
...
默认值为 DefaultDataDescriptor 类的内部实例。
public function get dataDescriptor():IMenuDataDescriptor public function set dataDescriptor(value:IMenuDataDescriptor):void
dataProvider:Object
popUpMenu 的 DataProvider。
默认值为 null。
此属性可用作数据绑定的源。修改此属性后,将调度 collectionChange 事件。
public function get dataProvider():Object public function set dataProvider(value:Object):void
iconField:String
dataProvider Array 中的字段名称,该字段中包含要为每个菜单项显示的图标。iconFunction 属性(如果已设置)将覆盖此属性。
项呈示器在数据提供程序中查找具有指定给 iconField 属性的名称的属性。如果该属性的值是 Class,则它会对该类进行实例化,而且它应为 IFlexDisplayObject 实例。如果该属性的值是字符串,则它会查找以确定应用程序中是否存在具有该名称的 Class 属性。如果在应用程序上找不到属性,则它会在文档上查找具有该名称的属性,并使该属性映射到某个 Class。
如果数据提供程序是一个 E4X XML 对象,则必须显式设置此属性;例如,使用 @icon 指定 icon 属性。
默认值为 "icon"。
此属性可用作数据绑定的源。修改此属性后,将调度 iconFieldChanged 事件。
public function get iconField():String public function set iconField(value:String):void
iconFunction:Function
一个函数,用于确定要为每个菜单项显示的图标。如果省略此属性,则 Flex 将使用由 iconField 属性确定的字段内容或属性。如果指定了此属性,则 Flex 将忽略任何 iconField 属性值。
默认情况下,该菜单不会尝试将图标与行中的文本一起显示。但是,通过指定图标函数,您可以为将创建并显示为行中的一个图标的图形指定一个类。
iconFunction 仅采用数据提供程序中的某个项目作为唯一参数,并返回一个类:
默认值为 null。
public function get iconFunction():Function public function set iconFunction(value:Function):void
labelField:String
dataProvider Array 中的字段名称,该字段包含要为每个菜单项显示的文本。labelFunction 属性(如果已设置)将覆盖此属性。如果数据提供程序是一个字符串 Array,则 Flex 会将每个字符串值用作标签。如果数据提供程序是一个 E4X XML 对象,则必须显式设置此属性;例如,使用 @label 指定 label 属性。
默认值为 "label"。
此属性可用作数据绑定的源。修改此属性后,将调度 labelFieldChanged 事件。
public function get labelField():String public function set labelField(value:String):void
labelFunction:Function
一个函数,用于确定要为每个菜单项显示的文本。如果省略此属性,则 Flex 将使用由 labelField 属性确定的字段内容或属性。如果指定了此属性,则 Flex 将忽略任何 labelField 属性值。
如果指定此属性,则标签函数必须查找一个或多个合适的字段并返回可显示的字符串。labelFunction 属性非常适用于处理格式设置和本地化。
标签函数必须使用 dataProvider 中的项目作为唯一的自变量,并返回一个字符串,如以下示例所示:
labelFunction(item:Object):String
默认值为 null。
public function get labelFunction():Function public function set labelFunction(value:Function):void
popUp:IUIComponent[覆盖]
对弹出的 Menu 对象的引用。
此属性是只读的,设置它不会产生任何效果。但可以通过设置 dataProvider 属性实现所需效果。(只写指示符显示在语法摘要中,因为 superclass 中的属性是可读写的,而此类将使用空的实现覆盖 setter。)
override public function get popUp():IUIComponent override public function set popUp(value:IUIComponent):void
showRoot:Boolean
指定是显示数据提供程序的一个还是多个顶级节点。如果此属性设置为 false,则该控件将只显示第一个顶级节点的子级节点。其它任何顶级节点都将被忽略。通常,对于顶级节点是文档对象的 E4X 格式的 XML 数据提供程序,需要将此属性设置为 false。
默认值为 true。
public function get showRoot():Boolean public function set showRoot(value:Boolean):void
public function PopUpMenuButton()
构造函数。
mx.events.MenuEventmx.events.MenuEvent.ITEM_CLICK
当用户从弹出菜单中选择项目时调度。
MenuEvent.ITEM_CLICK 事件类型常量指示用户已选择菜单项。
此事件类型的事件对象属性包含以下值。并非所有属性对于各种事件都有意义。有关详细信息,请参阅详细的属性说明。
bubblescancelablecurrentTargetmyButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。 indexitemitemRendererlabelmenunull。menuBarnull。targetcurrentTarget 属性始终可以访问侦听事件的 Object。type<?xml version="1.0" encoding="utf-8"?>
<!-- Simple example to demonstrate the Halo PopUpMenuButton control. -->
<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">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.MenuEvent;
// Event handler, invoked when you select from the menu.
public function itemClickHandler(evt:MenuEvent):void {
Alert.show("Menu label: " + evt.label
+ "
menu item index within parent menu: " + evt.index);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- A an data provider in E4X format. -->
<fx:XMLList id="treeDP2">
<node label="Inbox"/>
<node label="Calendar"/>
<node label="Deleted Items"/>
</fx:XMLList>
</fx:Declarations>
<s:Panel title="Halo PopUpMenuButton Control Example"
width="75%" height="75%"
horizontalCenter="0" verticalCenter="0">
<s:VGroup left="10" right="10" top="10" bottom="10">
<s:Label width="100%" color="blue"
text="Click the down arrow to open the menu."/>
<mx:PopUpMenuButton id="p2"
dataProvider="{treeDP2}"
labelField="@label"
itemClick="itemClickHandler(event);"/>
</s:VGroup>
</s:Panel>
</s:Application>
显示 MXML 语法









