[英]ItemClick Event in a flex Combobox
有誰知道,有沒有辦法在Flex ComboBox(或類似的東西)中捕獲ItemClick事件。 也許有任何技巧.. :)我確實意識到,我可以自定義它,但這不適合我的情況。
謝謝你的時間 :)
我認為以下文檔會有所幫助
正如您在mx:ComboBox
源中所看到的,創建下拉列表的函數是私有的, ITEM_CLICK
的監聽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是。 這可能使調度(泡沫)事件變得非常困難。
我找到了這個解決方案 我只想要一個帶有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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.