【问题标题】:Flex: menu items not being displayedFlex:菜单项不显示
【发布时间】:2012-06-08 14:23:13
【问题描述】:

这是我的代码,预期的菜单将显示祖父母 > 父母 > 孩子。 但是,没有显示“父”项,而是直接在“祖父”下方显示“子”。

<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>

有趣的是,当我添加第二个父级时,它确实正确显示了菜单。 谁能解释这里发生了什么以及我该如何解决这个问题?

【问题讨论】:

    标签: apache-flex menu


    【解决方案1】:

    我拿了你的代码,把它扔到我自己的项目中,得到了和你一样的结果。然后我向您的 XML 添加了另一个父级,一切正常。我猜如果你只有一个父节点,真的不需要显示它,所以它会跳到子节点。 在下面添加了第二个父项:

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

    【讨论】:

    • 我还注意到,有时我只有 1 个父级,有时只有 2 个父级,但我希望我的界面保持一致。我想我们应该认为这是一个错误。
    【解决方案2】:

    试试下面的方法:-

    <?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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 2018-08-19
      • 1970-01-01
      相关资源
      最近更新 更多