2009-05-21 8 views
1

私は、ビューのスタックでキャンバスに変更する配列でflexのコンボボックスを使用しようとしています。 カスタムアクションスクリプトでこれを行うことはできますか?私が設計しているUIが実際にこれに恩恵を与える可能性があります。ここでフレックス質問:Flexでコンボボックスを使用してビュースタックを変更することはできますか?

+0

素晴らしい...これは動作します!助けてくれてありがとう!!! –

答えて

3

は、あなたがやろうとしているものを示して少しデモアプリケーションです:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> 

    <mx:Script> 
     <![CDATA[ 
      import mx.core.Container; 

      private function onComboBoxChange():void 
      { 
       stackNav.selectedChild = this[comboNav.selectedItem]; 
      }    

     ]]> 
    </mx:Script> 

    <mx:ComboBox id="comboNav" dataProvider="{['canvas1','canvas2']}" change="onComboBoxChange()"/> 

    <mx:ViewStack id="stackNav" width="400" height="300"> 
     <mx:Canvas id="canvas1" width="100%" height="100%"> 
      <mx:Label text="Hello" horizontalCenter="0" verticalCenter="0"/> 
     </mx:Canvas> 
     <mx:Canvas id="canvas2" width="100%" height="100%"> 
      <mx:Label text="World!" horizontalCenter="0" verticalCenter="0"/> 
     </mx:Canvas> 
    </mx:ViewStack> 

</mx:Application> 

あなたはonComboBoxChange内のロジックを(変更可能)のほかのselectedIndexを使用する:

stackNav.selectedIndex = comboNav.selectedIndex; 
0

またはすることができますviewStackのselectedIndexをコンボのselectedIndexプロパティにバインドします。

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> 
    <mx:ComboBox id="comboNav" dataProvider="{['canvas1','canvas2']}"/> 

    <mx:ViewStack id="stackNav" width="400" height="300" 
     selectedIndex="{comboNav.selectedIndex}"> 
     <mx:Canvas id="canvas1" width="100%" height="100%"> 
      <mx:Label text="Hello" horizontalCenter="0" verticalCenter="0"/> 
     </mx:Canvas> 
     <mx:Canvas id="canvas2" width="100%" height="100%"> 
      <mx:Label text="World!" horizontalCenter="0" verticalCenter="0"/> 
     </mx:Canvas> 
    </mx:ViewStack> 

</mx:Application> 
0

あなたは、このソリューションを使用することができますが、スペース と言葉をパイクすることができないことを警告すること(「キャンバス1」〜「canvas1」に変更してみてください)、あなたが表示されます。

[Bindable] private var models:Array = ["tasks","users","bugs"]; 
public function changeViewStackModel():void { 
    //this.modelViewStack.selectedChild=users; //works 
//this.modelViewStack.selectedChild="users"; //does not work 
//this.modelViewStack.selectedChild=this.modelsCombo.selectedItem; //does not work 

    switch(modelsCombo.selectedItem) { 
    case "tasks": modelViewStack.selectedChild=tasks; break; 
    case "users": modelViewStack.selectedChild=users; break; 
    case "bugs": modelViewStack.selectedChild=bugs; break; 
    } 

} 

MXMLコード:

<mx:ComboBox id="modelsCombo" dataProvider="{models}" selectedIndex="0" 
    change="changeViewStackModel()"/> 
    <mx:ViewStack x="29.25" y="55" id="modelViewStack" width="90%" height="200"> 
     <mx:Canvas id="tasks" label="Tasks"><mx:Label text="Tasks stack view!!"/> 
     </mx:Canvas> 
     <mx:Canvas id="users" label="Users"><mx:Label text="Users stack view!!"/> 
     </mx:Canvas> 
     <mx:Canvas id="bugs" label="Bugs"><mx:Label text="Bugs stack view!!"/> 
     </mx:Canvas> 
    </mx:ViewStack> 
関連する問題