我在Flex中启用/禁用菜单项有一个小问题。
问题是我可以直接禁用menuItem而不是它的子菜单项。
我有以下菜单结构:
public var menuAgroApp:XMLList =
<>
<menuitem label="ADMIN">
<menuitem label="Option 1"/>
<menuitem label="Option 2"/>
<menuitem label="Option 3"/>
<menuitem label="Option 4"/>
</menuitem>
<menuitem label="Prices">
<menuitem label="Price 1"/>
<menuitem label="Price 2"/>
<menuitem label="Price 3"/>
</menuitem>
<menuitem label="Orders">
<menuitem label="Order 1"/>
<menuitem label="Order 2"/>
</menuitem>
</>;
使用此代码,我可以禁用“ADMIN”菜单,但不能禁用任何选项:
menuPrincipal.dataDescriptor.setEnabled( XML(modeloGlobal.modelo.menuAgroAppCollection.source[0]), false );
问题是,如何在ADMIN menuItem中访问menuItem?
感谢。
答案 0 :(得分:0)
这是我的解决方案和working example:
为了控制子菜单项,您需要使用XML表达式导航到它,然后指向List的第一个元素。之所以如此,是因为您的XML表达式在常见情况下提供XMLList。
<?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:Script>
<![CDATA[
[Bindable]public var menuAgroApp:XMLList =
<>
<menuitem label="ADMIN">
<menuitem label="Option 1"/>
<menuitem label="Option 2"/>
<menuitem label="Option 3"/>
<menuitem label="Option 4"/>
</menuitem>
<menuitem label="Prices">
<menuitem label="Price 1"/>
<menuitem label="Price 2"/>
<menuitem label="Price 3"/>
</menuitem>
<menuitem label="Orders">
<menuitem label="Order 1"/>
<menuitem label="Order 2"/>
</menuitem>
</>;
protected function onOnOffAdmin(event:MouseEvent):void
{
myMenuBar.dataDescriptor.setEnabled(menuAgroApp[0], false);
}
protected function onOnOffAdminOption2(event:MouseEvent):void
{
myMenuBar.dataDescriptor.setEnabled(menuAgroApp[0].menuitem.(@label == 'Option 2')[0], false);
}
]]>
</fx:Script>
<s:VGroup x="30" y="30">
<mx:MenuBar id="myMenuBar" labelField="@label" dataProvider="{menuAgroApp}"/>
<s:Spacer height="20"/>
<s:Button label="Set Off Admin" click="onOnOffAdmin(event)" />
<s:Button label="Set Off Admin/Option2" click="onOnOffAdminOption2(event)" />
</s:VGroup>
</s:Application>