2011-02-06 2 views

ответ

1

Вот хорошее решение, используя событие «CollectionEvent.COLLECTION_CHANGE»:

http://blog.flexexamples.com/2008/12/16/detecting-when-the-data-provider-of-a-datagrid-control-changes-in-flex/

+0

Я попытался добавить этого слушателя событий в список, но он не вызвал. После добавления его в поставщик данных List, он получил один раз, но не получил вызов после дополнительных изменений. – Anonymous1

+0

Не могли бы вы добавить код в свой вопрос? Действительно, вы должны добавить слушателя событий к поставщику данных. Убедитесь, что вы не создаете нового поставщика данных в любой момент, и в этом случае новый провайдер не будет поддерживать подписку на события. – Dunaril

+0

Я использую перетаскивание с двумя списками. Это несколько похоже на второй пример: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7cfd.html – Anonymous1

0

Если вы работаете с ICollectionView (ака ArrayCollection), вы можете добавить прослушиватель событий для «collectionChange " мероприятие.

Docs: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/ListCollectionView.html#event:collectionChange

Если вы находитесь внутри документа MXML свойство DataProvider компонента пользовательского интерфейса должен быть источником привязки данных. Таким образом, вы можете просто {myComponent.dataProvider.length} привязать значение к чему-то другому, если это вариант использования.

0

Единственный способ, которым я мог получить, это сделать привязку в коде ActionScript. Что-то вроде этого:

protected function creationCompleteHandler(event:FlexEvent):void { 
    BindingUtils.bindSetter(myHandleFunction, myList, "dataProvider"); 
} 

myHandleFunction получает по параметру объект с типом связанного свойства.

Смежные вопросы