2012-06-07 92 views
0

這是我的代碼,預期的菜單顯示祖父母>父母>孩子。 但是,「父」項沒有顯示,而是直接在「祖父母」下面顯示「孩子」。Flex:不顯示菜單項

<mx:Script> 
    <![CDATA[ 
     // Import the Menu control. 
     import mx.controls.Menu; 

     // Create and display the Menu control. 
     private function createAndShow():void { 
      var myMenu:Menu = Menu.createMenu(null, myMenuData, false); 
      myMenu.labelField="@label"; 
      myMenu.show(10, 10); 
     } 
    ]]> 
</mx:Script> 

<!-- Define the menu data. --> 
<mx:XML format="e4x" id="myMenuData"> 
    <root> 
     <menuitem label="grandparent"> 
      <menuitem label="parent"> 
       <menuitem label="child"/> 
      </menuitem> 
     </menuitem> 
    </root> 
</mx:XML> 

<mx:VBox> 
    <!-- Define a Button control to open the menu --> 
    <mx:Button id="myButton" 
       label="Open Menu" 
       click="createAndShow();"/> 
</mx:VBox> 

有趣的是,當我添加第二個親本,它正確地顯示菜單。 任何人都可以解釋這裏發生了什麼,我怎麼能解決這個問題?

回答

0

我把你的代碼扔到了我自己的項目中,得到了和你一樣的結果。然後,我添加了另一個家長到您的XML和一切正常。我猜測,如果你只有一個父節點,那麼真的不需要顯示它,所以它跳到了孩子身上。 下面添加第二父:

<root> 
    <menuitem label="grandparent"> 
     <menuitem label="parent1"> 
      <menuitem label="child"/> 
     </menuitem> 
     <menuitem label="parent2"> 
      <menuitem label="child"/> 
     </menuitem> 
    </menuitem> 
</root> 
+0

我也注意到的事情是,有時我剛1父,有時2,但我想我的界面保持一致。我想我們應該考慮這個錯誤。 – Pmarcoen

0

嘗試像下面的一些事情: -

<?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:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
     <fx:XML id="myMenuData" > 
       <menuitem label="grandparent"> 
        <menuitem label="Uparent"> 
         <menuitem label="child"/> 
        </menuitem> 
       </menuitem> 
     </fx:XML> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
     // Import the Menu control. 
      import mx.controls.Menu; 

      // Create and display the Menu control. 
      private function createAndShow():void { 
       var myMenu:Menu = Menu.createMenu(null, myMenuData, true); 
       myMenu.labelField="@label"; 
       myMenu.show(10, 10); 
      } 
     ]]> 
    </fx:Script> 

    <!-- Define the menu data. --> 


    <mx:VBox> 
     <!-- Define a Button control to open the menu --> 
     <mx:Button id="myButton" 
        label="Open Menu" 
        click="createAndShow();"/> 
    </mx:VBox> 

</s:Application>