Это похоже на то, что сказал @ www.Flextras.com, поэтому я не собираюсь повторять это. Однако я добавлю пример и одну или две вещи.
Ваш пользовательский ItemRenderer может выглядеть так:
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
private function requestForm():void {
var event:ItemClickEvent = new ItemClickEvent(ItemClickEvent.ITEM_CLICK);
event.index = itemIndex;
event.item = data;
owner.dispatchEvent(event);
}
]]>
</fx:Script>
<s:Label id="labelDisplay" verticalCenter="0" />
<s:Button right="0" label="open" verticalCenter="0" click="requestForm()" />
</s:ItemRenderer>
Две вещи, которые отличаются от ответа Flextras:
- Я использую встроенное ItemClickEvent вместо пользовательского события> меньше
кодирование
- Я отправляю событие на
owner
ItemRenderer, который
на самом деле это список, содержащий этот ItemRenderer. Из-за этого,
Вам не нужно выдавать событие.
Теперь, чтобы открыть форму при нажатии кнопки, сделайте что-то вроде этого:
myList.addEventListener(ItemClickEvent.ITEM_CLICK, openForm);
private function openForm(event:ItemClickEvent):void {
trace("open " + event.item.toString());
}