禁用菜单栏中的Flex菜单项



我有一个与启用/禁用Flex中的菜单项有关的小问题。

问题是,我可以直接禁用菜单项,但不能禁用它的子菜单项。

我有以下菜单结构:

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菜单项中访问菜单项?

谢谢。

这是我的解决方案和工作示例:

为了控制子菜单项,您需要使用XML表达式导航到它,然后指向列表的第一个元素。之所以如此,是因为您的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>

最新更新