Как сделать кнопку в панели кнопок выбранной по умолчанию? - PullRequest
0 голосов
/ 05 ноября 2011

У меня есть Spark ButtonBar, и я правильно подключил его с помощью ViewStack.В настоящее время, когда я запускаю приложение (AIR), первая кнопка на панели кнопок выбирается по умолчанию.Как сделать вторую кнопку выбранной по умолчанию?

<mx:ViewStack id="viewStack">
    <s:NavigatorContent id="Page 1">
        <!-- Other stuff in here -->
    </s:NavigatorContent>
    <s:NavigatorContent id="Page 2">
        <!-- Other stuff in here -->
    </s:NavigatorContent>
</mx:ViewStack>

<s:ButtonBar dataProvider="{viewStack}" selectedIndex="1"></s:ButtonBar>

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Я сделал это, и это сработало хорошо.Вы уверены, что selectedIndex не работает?

  <?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:Declarations>
    <s:ButtonBar 
        selectedIndex="2" width="400" height="300">
        <s:dataProvider>
            <s:ArrayCollection>
                <fx:String>1</fx:String>
                <fx:String>2</fx:String>
                <fx:String>3</fx:String>
            </s:ArrayCollection>
        </s:dataProvider>

    </s:ButtonBar>

</s:Application>

Редактировать:

Вам это поможет?

<?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" creationComplete="init()">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.events.CollectionEvent;
            [Bindable]
            private var dataSource:ArrayCollection = new ArrayCollection();

            private function init():void
            {

                dataSource = new ArrayCollection(new Array("1","2","3"));
                dataSource.addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionEventChange);
                dataSource.dispatchEvent(new CollectionEvent(CollectionEvent.COLLECTION_CHANGE));

            }

            private function collectionEventChange(event:CollectionEvent):void
            {
                this.btnBar.selectedIndex = 2;
            }
        ]]>
    </fx:Script>
    <s:ButtonBar  id="btnBar" dataProvider="{dataSource}"
         width="400" height="300" >

    </s:ButtonBar>

</s:Application>
0 голосов
/ 05 ноября 2011

Вам необходимо установить выбранный индекс после , компонент был инициализирован, а после заполнена панель кнопок. Панель кнопок создает кнопки только тогда, когда она обнаруживает изменение в своем поставщике данных (путем прикрепления к нему наблюдателя изменений после его привязки).

Вот почему в пересмотренном ответе господина есть настройка выбранного индекса внутри слушателя CollectionEvent.

Более надежное решение состоит в том, чтобы создать подкласс панели кнопок и настроить его, добавив элемент defaultSelectedIndex, или создать миксин, который может добавить эту функциональность в любой подкласс listbase. DefaultSelectedIndex установит для выбранного индекса указанное значение при изменении его поставщика данных.

...