Apache flex flex组合框中的ItemClick事件
有人知道吗,有没有办法在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 { // ...
谢谢您的时间:)我认为下面的文档会有所帮助
正如您在
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。我已经用过滤器和树作为下拉列表编写了可编辑的一个,我无法想象,我将如何修补和破解origonalComboBox
,以实现所需的行为。嘿,真的。。感谢您的解释(чччччччч:ч)。避免自定义失败。。写下我的组合杰作:)
[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;
}