Flex:查看堆栈导航器

时间:2010-05-10 15:17:06

标签: flex viewstack

我有一个组件mxml文件,其中我有一个视图堆栈,点击一个按钮我导航到第一个孩子,现在我需要在第二个孩子中点击一个按钮时导航到第二个孩子。所有子节点都是视图堆栈中包含的组件文件。怎么可以这样做, 示例代码如下所示,

-------------------- Application.mxml ---------------------

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" >
    <mx:Script>
        <![CDATA[
             private function loadScreen():void
             {
                navigationViewStack.selectedChild=id_offering;  
             }
        ]]>
    </mx:Script>

     <mx:Button label="Save" click="loadScreen();"/>

 </mx:Canvas>

<mx:ViewStack id="navigationViewStack"  width="100%" height="100%">
    <components:dashboard   id="id_dashboard" label="Dashboard" />
    <components:offering   id="id_offering" label="Offering" />
    <components:IssueSec id="id_issueSec" label = "Issues"/>
</mx:ViewStack>

-------------------------结束------------------------ --------------

现在在我的offering.mxml文件中,如果我尝试访问navigationViewStack,我收到一条错误,指出'访问未定义的属性navigationViewStack。

帮助我了解如何从组件mxml文件访问视图堆栈。

谢谢!

干杯, 蒂娜

3 个答案:

答案 0 :(得分:4)

Offering.mxml无权访问navigationViewStack,因为它是Application.mxml文件中的属性。您需要从offering.xml内部调度一个事件,Application.mxml将侦听该事件,并通过切换到相应的视图堆栈元素来处理它。

如果您不熟悉自定义事件,请阅读:

http://livedocs.adobe.com/flex/3/html/help.html?content=createevents_3.html

答案 1 :(得分:1)

自定义事件是您问题的答案。它的简单看看这个例子

http://flexblog.faratasystems.com/2007/02/26/event-driven-programming-in-flex-with-custom-events

答案 2 :(得分:1)

自定义事件是正确和适当的方式;如果你想要一个快速而肮脏的解决方案,随着代码库的增长最终难以维护,你可以通过Offering.mxml中的按钮点击处理程序来尝试:

ViewStack(this.parent).selectedIndex = 2; //2 for IssueSec