spark.components.List
имеет spark.components.SkinnableDataContainer
в своей иерархии классов, которая отправляет событие dataProviderChanged
при каждом изменении dataProvider.К сожалению, в SkinnableDataContainer
нет метаданных [Event]
, позволяющих использовать это событие в MXML.Итак, вам нужно создать свой собственный пользовательский компонент, который расширяет List
.
package
{
import spark.components.List;
[Event(name="dataProviderChanged", type="flash.events.Event")]
public class MyList extends List
{
public function MyList()
{
super();
}
}
}
Используя свой пользовательский компонент, вы можете добавить прослушиватель событий для dataProviderChanged
и соответственно обновить свой selectedIndex
.
<ns1:MyList id="list" dataProvider="{model.stuff}" width="100%" height="100%"
dataProviderChanged="selectedIndex = selectedSlider.value"
selectedIndex="@{selectedSlider.value}"
itemRenderer="{stuffRenderer}">
</ns1:MyList>
Кстати: это работает и с другими List
компонентами (например, DropDownList
).