Apache flex flex组合框中的ItemClick事件

Apache flex flex组合框中的ItemClick事件,apache-flex,events,combobox,onitemclicklistener,Apache Flex,Events,Combobox,Onitemclicklistener,有人知道吗,有没有办法在Flex组合框(或任何类似的)中捕获ItemClick事件。也许有什么把戏……)我确实意识到,我可以定制它,但这不适合我的情况 谢谢您的时间:)我认为下面的文档会有所帮助 正如您在mx:ComboBox源代码中看到的,创建下拉列表的函数是私有的,单击项的侦听器是私有的,列表本身也是私有的: private var _dropdown:ListBase; private function getDropdown():ListBase { // ...

有人知道吗,有没有办法在Flex组合框(或任何类似的)中捕获ItemClick事件。也许有什么把戏……)我确实意识到,我可以定制它,但这不适合我的情况


谢谢您的时间:)

我认为下面的文档会有所帮助


正如您在
mx:ComboBox
源代码中看到的,创建下拉列表的函数是私有的,单击
项的侦听器是私有的,列表本身也是私有的:

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();
    }
}
所以你甚至不能扩展组合框


唯一公开的东西是
dropdownFactory
,理论上可以重写它,以某种方式注册创建的下拉列表或创建扩展列表。但我看到的问题是,
ComboBox
不是下拉列表的父项,而PopupManager是。这会使分派(气泡)事件变得非常困难。

我找到了这个解决方案。我只想要一个spark dropdownlist,带有itemClick事件,不带itemselect选项(不在按钮上显示所选项目标签)


好尼克,小天线;)你为什么需要点击?也许原来的问题还有另一个解决办法。谢谢:)也许你是对的。。但我还是很好奇如何让它发挥作用。所以唯一的解决方案是定制?你使用什么样的组合框?MX或Spark?谢谢,该文档非常有用,但我需要将此事件放在组合框中:)嗯。。关于项目点击列表的一个想法。。。用列表替换组合框的下拉列表是一个好主意,还是一个巨大的失败?:)
组合框
中的下拉列表已经是一个
列表
private var\u dropdownFactory:IFactory=new ClassFactory(列表)@Antenka moropus所说的是正确的组合框,下拉列表仅从listbase扩展。试试这个组合,我想它会有用的。。是的,很难。假设有两个组件:组合框和列表。将组合的dropdownWidth设置为0。把清单放在下面。当用户试图打开一个组合时,显示一个列表控件(而不是下拉列表)。我只是对。。这是肮脏的解决方案吗?我在一个自动完成组件中看到了这一点。IMHO,更简单的方法是编写自己的
组合框
,包含您需要的所有内容(бЯжжжаааааааааааа107。我已经用过滤器和树作为下拉列表编写了可编辑的一个,我无法想象,我将如何修补和破解origonal
ComboBox
,以实现所需的行为。嘿,真的。。感谢您的解释(чччччччч:ч)。避免自定义失败。。写下我的组合杰作:)
[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;
    }