有谁知道,有没有办法在Flex ComboBox(或类似的东西)中捕获ItemClick事件。也许有任何技巧.. :)我确实意识到,我可以自定义它,但这不适合我的情况。
感谢您的时间:)
答案 0 :(得分:1)
我认为以下文件会有所帮助
答案 1 :(得分:1)
正如您在mx:ComboBox
来源中看到的那样,创建下拉列表的函数是私有的,ITEM_CLICK
的监听器是私有的,列表本身也是私有的:
private var _dropdown:ListBase;
private function getDropdown():ListBase
{
// ...
_dropdown = dropdownFactory.newInstance();
// ...
_dropdown.addEventListener(ListEvent.ITEM_CLICK, dropdown_itemClickHandler);
// ....
}
private function dropdown_itemClickHandler(event:ListEvent):void
{
if (_showingDropdown)
{
close();
}
}
所以你甚至无法扩展ComboBox
。
唯一的公共事物是dropdownFactory
,理论上可以覆盖以某种方式注册创建的下拉列表或创建扩展列表。但我看到的问题是ComboBox
不是下拉列表的父级 - PopupManager是。这可能会使调度(泡沫)事件变得非常困难。
答案 2 :(得分:0)
我找到了这个解决方案。我只想要一个带有itemClick事件和没有itemselect选项的spark下拉列表(不要在按钮上显示所选的项目标签)
[Event(name="itemClick", type="mx.events.ItemClickEvent")]
public class ItemClickDropDownList extends DropDownList
{
public function ItemClickDropDownList()
{
super();
}
override public function closeDropDown(commit:Boolean):void
{
super.closeDropDown(commit);
var e:ItemClickEvent = new ItemClickEvent(ItemClickEvent.ITEM_CLICK, true);
e.item = this.selectedItem;
e.index = this.selectedIndex;
dispatchEvent(e);
//Deselect item
this.selectedIndex = -1;
}