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

    <fx:Declarations>

        <s:ArrayCollection id="dp"> 
            <fx:Object label="Just a label" text="Bla bla bla..."/>
            <fx:Object label="Just a label" text="Bla bla bla..."/>
            <fx:Object label="Just a label" text="Bla bla bla..."/>
        </s:ArrayCollection>

    </fx:Declarations>

    <s:ButtonBar dataProvider="{tabs}" />

    <mx:ViewStack id="tabs" resizeToContent="true">

        <s:DataGroup dataProvider="{dp}">

            <s:NavigatorContent label="{data.label}">
                <s:Label text="{data.text}"/>
            </s:NavigatorContent>

        </s:DataGroup>

    </mx:ViewStack>

</s:Application>

どうすればそのようなことができますか?(NavigationContent は itemRenderer になり、ButtonBar は非常に重要です)。

4

1 に答える 1

0

ViewStackデータ グループを の中に直接配置することはできません...アイテムは を実装する必要がありますINavigatiorContent

だから、これは私が思いつくことができる最高のものです。確かに、ArrayCollectionまたはこれよりも高度なものへの更新は処理しませんが、これは開始点です。

<s:VGroup>
    <s:ButtonBar dataProvider="{tabs}" />

    <mx:ViewStack id="tabs" resizeToContent="true"  >
        <mx:addedToStage>
            <![CDATA[
                for(var i:int = 0; i < dp.length; i++) {
                    var label:Label = new Label();
                    label.text = dp.getItemAt(i).text;

                    var context:NavigatorContent = new NavigatorContent();
                    context.label = dp.getItemAt(i).label;
                    context.addElement(label);

                    tabs.addChild(context);
                }
            ]]>
        </mx:addedToStage>
    </mx:ViewStack>
</s:VGroup>

本当にこれを実現するのであればViewStack、プロパティを含む派生クラスを新たに作成しdataProviderます。内部的には、コレクションの変更をリッスンして、アイテムを追加/削除します。このクラスにはitemRendererプロパティも含まれるため、タブの外観を定義できます。

これに関する問題は、通常、タブにはデータに対応する特定のビューがあることです。itemRendererFunctionおそらく、マッピングを行うためにを含めたいと思うでしょう。

ぐちゃぐちゃで水漏れしそうですが、あなたなら実現できます。

于 2011-05-13T00:48:55.650 に答える