如何制作mxml实例并传递参数?

时间:2011-01-11 08:00:44

标签: flex dynamically-generated togglebutton

我想创建mxml的实例(在我的例子中是EventList)并传递参数。我的事件列表是一个面板列表,所以我想传递参数并动态生成n个面板(n参数传递)。我有主要的应用程序,我点击按钮栏,当我点击第一个我想要例如在第二个按钮20面板(n = 20)等生成3个面板(n = 3)。 我怎样才能做到这一点?我如何通过n以及显示列表的最佳方式是什么?当我点击切换按钮时,我想生成列表!

1 个答案:

答案 0 :(得分:2)

使用xmlnamespace(xmlns)访问源文件夹中的mxml文件。我创建了一个包含xmlns =“*”的应用程序(*表示您可以访问源文件夹中的任何组件)以访问myEvenList组件。我在这里传递n值。查看示例.HTH。

togglePanelCount.mxml

   <?xml version="1.0" encoding="utf-8"?>
    <mx:Application name="ToggleButtonBar_toggleOnClick_test"
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical"
    verticalAlign="top"
    backgroundColor="white" xmlns:eventList="*">                                 <mx:ToggleButtonBar id="toggleButtonBar"
                    dataProvider="{viewStack}" /><mx:ViewStack id="viewStack"
        width="100%"
        height="100%">
    <eventList:myEventList n="5" id="List1"/>
    <eventList:myEventList n="20" id="List2"/>
 </mx:ViewStack></mx:Application>

myEvenList.mxml

          <?xml version="1.0" encoding="utf-8"?><mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="createPanels()"><mx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import mx.containers.Panel;
        public var n:int;
        public function createPanels():void{
         Alert.show("in create panel");
         for(var i:int =0 ;i<n;i++){
          var panel:Panel = new Panel();
          panel.title = "panel"+(i+1);
          panelList.addChild(panel);
          }
          }
    ]]>
</mx:Script><mx:VBox id="panelList" /></mx:Canvas>

PS:将n作为公共属性本身为您提供了一种传递面板数量的方法。即使在应用程序的mx:Script标记中,您也可以实例化myEventList对象并设置n的值而不是使用mxml标签