2010-10-18 48 views
4

我在FLEX4以下XML(AIR)項目定義我的菜單界面的開始:編程方式啓用/ Flex中禁用菜單欄按鈕4

<mx:MenuBar x="0" y="0" width="100%" id="myMenuBar" labelField="@label" itemClick="menuChange(event)"> 
    <mx:dataProvider> 
    <s:XMLListCollection> 
    <fx:XMLList xmlns=""> 
     <menu label="File"> 
      <item label="New"/> 
      <item label="Load"/> 
      <item label="Save" enabled="false"/> 
     </menu> 
     <menu label="Help"> 
      <item label="About"/> 
     </menu> 
    </fx:XMLList> 
    </s:XMLListCollection> 
    </mx:dataProvider> 
</mx:MenuBar> 

我試圖找到將讓語法我通過點擊「加載」來加載文件後,將保存按鈕設置爲enabled = true,但我無法弄清楚語法,請有人提出建議。

當前檢測按鈕點擊的方式是通過Switch/Case測試MenuEvent event.item。@ label的String結果。也許這不是最好的方法?

+0

也許這也是有用:http://www.interactiveoctopus.com/blog/index.php/2008/08/flex-programmatically-disableenable-items-in-a-menubar-component/ – ggkmath 2012-09-13 13:03:22

回答

5

回答我自己的問題....再次。我在做什麼似乎沒有人想回答?

不管怎麼說,那就是:

事實證明,因爲菜單欄是在XML定義,它是完全隨意的,它完全取決於你決定如何定義你的菜單,在我的情況下,根據菜單在上面的XML中,更改Save按鈕的「eanabled」狀態的語法如下所示。

menubarXML.item.(@label=="Save")[email protected] = "true"; 

其中enubarXML是爲XMLListCollection保持我seperately重新定義了的XMLList。

[Bindable] 
     public var menuBarCollection:XMLListCollection; 

     private var menubarXML:XMLList =<> 
      <menu label="File"> 
       <menuitem label="New" data="1A"/> 
       <menuitem label="Open" data="1B"/> 
       <menuitem label="Save" data="1C" enabled="false"/> 
      </menu> 
      <menu label="Help" data="2A"> 
       <menuitem label="About" data="2A"/> 
      </menu> 
      </>; 

然後調用完整的應用程序創建這個函數:

private function initCollections():void { 
      menuBarCollection = new XMLListCollection(menubarXML); 
     } 

,當然還有菜單欄(自定義此要求)的XML定義:

<mx:MenuBar id="myMenuBar" labelField="@label" itemClick="menuChange(event)" dataProvider="{menuBarCollection}"/> 

希望有人發現我的勞動成果很有用。

+2

對於某些原因,我無法讓你的語法爲我工作。我最終使用了'menubar..menuitem。(attribute(「label」)==「Save」)中的一些東西。@ enabled = true;'代替。另外,我無法弄清楚爲什麼你要爲數據提供者使用'XMLListCollection'。一個普通的舊'XML'對象類型工作得很好,並且這些項目在動態更改時直接更新到XML。是否有你使用'XMLListCollection'的具體原因?不是最大的交易;只是認爲下一個人可能會發現另一個用戶的「腳註」有用。 – merv 2011-10-13 04:37:53

0
private var actions : Object = { 
    mi_new : mi_new, 
    mi_open : mi_open 
}; 

protected function myMenuBar_itemClickHandler(event:MenuEvent):void 
{ 
    actions[[email protected]](); 
} 

private function mi_new() : void { 
    // do new stuff 
} 

private function mi_open() : void { 
    // do open stuff 
} 

private var menubarXML:XMLList =<> 
    <menu label="File"> 
     <menuitem label="New" data="1A" action="mi_new"/> 
     <menuitem label="Open" data="1B" action="mi_open"/> 
     <menuitem label="Save" data="1C" enabled="false"/> 
    </menu> 
    <menu label="Help" data="2A"> 
     <menuitem label="About" data="2A"/> 
    </menu> 
    </>;