In literal xml declarations, the braces do not create a binding.  They
simply give access to the members of the parent scope.

 

To do what you want, use an e4x expression to find the menuitem node you
need, then set the attributes as desired.

 

Tracy

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of nhid
Sent: Tuesday, April 01, 2008 2:00 PM
To: [email protected]
Subject: [flexcoders] Disable/enable menuBar menuItem

 

Hello,

 

My menubar is like the following:

 

----------------------------

In mxml file, myFile.mxml, I have:

<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml>  creationComplete="initCollections();"
> 

        <mx:Script>

                <![CDATA[

                        import mx.collections.*;

                        [Bindable] public var
menuBarCollection:XMLListCollection;

                        [Bindable] public var model:MyModelLocator =
MyModelLocator.getInstance();

                        private var menubarXML:XMLList =

                        <> 

                                <menuitem label="Menu1">

                                <menuitem label="MenuItem 1-A" data="1A"
enabled={model.menuEnabledFlags[0]}/>

                                <menuitem label="MenuItem 1-B" data="1B"
enabled={model.menuEnabledFlags[1]}/>

                                </menuitem>

                                <menuitem label="Menu2">

                                <menuitem label="MenuItem 2-A"
data="2A"/>

                                <menuitem type="separator" />

                                <menuitem label="MenuItem 2-B" >

                                <menuitem label="SubMenuItem 3-A"
data="3A"/>

                                <menuitem label="SubMenuItem 3-B"
data="3B"/>

                                </menuitem>

                                </menuitem>

                        </>;

// Event handler for the MenuBar control's itemClick event.

private function menuHandler(event:MenuEvent):void {

        Alert.show("Label: " + [EMAIL PROTECTED] + "\n" + 

        "Data: " + [EMAIL PROTECTED], "Clicked menu item");

}

// Event handler to initialize the MenuBar control.

private function initCollections():void {

        menuBarCollection = new XMLListCollection(menubarXML);

}

private function changeMenu():void {

        menuEnabledFlags[0] = true;

        menuEnabledFlags[1] = false;

}

]]>

</mx:Script>

<mx:MenuBar labelField="@label" itemClick="menuHandler(event);"
dataProvider="{menuBarCollection}" />

<mx:Button label="Change Enabled/Disabled Menu" click="changeMenu()"/>
</mx:Application>

---------------

In MyModelLocator.as file, I have:

public var menuEnabledFlags:Array = [false, true];

--------------------

Initially, when the application is loaded, "MenuItem 1-A" is disabled,
and "MenuItem 1-B" is enabled as the flags are defined in
MyModelLocator.as

I want to dynamically change enable/disable flags for the item "MenuItem
1-A" and "MenuItem 1-B" in .as (Script) file. So I changed the value of
menuEnabledFlags as such menuEnabledFlags[0] = true; menuEnabledFlags[1]
= false;

I expected "MenuItem 1-A" will be enabled and "MenuItem 1-B" will be
disabled.

However, the change didn't reflect on the menubar. 

How can I dynamically enable/disable "MenuItem 1-A" and "MenuItem 1-B"?

Please advise

Thanks!

 

Reply via email to