Flex: пользовательское контекстное меню для компонента - PullRequest
2 голосов
/ 21 марта 2011

У меня есть приложение Flex, работающее с Flash Player, а не AIR, которое содержит Tree, для которого я хотел бы добавить пользовательское контекстное меню.

Попытался просто выполнить <mx:Tree ... contextMenu="{MyClassWithStatic.menu}">, но этоничего не делал

Пошел поиск и нашел эту цитату в некоторых документах Adobe где-то

В Flex или Flash Builder контекстные меню могут иметь только компоненты верхнего уровня в приложении.Например, если элемент управления DataGrid является дочерним по отношению к контейнеру TabNavigator или VBox, элемент управления DataGrid не может иметь своего собственного контекстного меню.

, поэтому переходил вверх, пробуя каждый родительский элемент, пока я не достиг своего <Application> -элемент, который соответствует тому, что они написали.

Попытка создания компонента Flex на основе группы (по умолчанию), которая содержала мое дерево, и контекстное меню там, на элементе верхнего уровня, надеясь, что это будет работать, но безрезультатно.

Есть ли другой способ управления этим, которого я еще не нашел?

Код, который я использую для создания меню:

var menuItems:Array = [];
var rename:ContextMenuItem = new ContextMenuItem("Rename");
rename.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, renameSelectedHandler);  
menuItems.push(rename);  
menu.customItems = menuItems;
menu.hideBuiltInItems();

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

Вы правы, контекстное меню работает только с компонентами верхнего уровня.Это ограничение Flex, которое раздражает и не должно быть в первую очередь.Вы ничего не можете сделать, так как нет другого способа запечатлеть событие, кроме как использовать какой-то обман Javascript, но даже тогда он не скажет вам, где вы щелкнули.

На вашем месте я быпросто забудьте эту концепцию и, если возможно, откажитесь от использования правого клика.

0 голосов
/ 24 марта 2011

Я сам не пробовал, но после прочтения комментариев на http://michael.omnicypher.com/2007/02/flex-trees-with-context-menu_14.html похоже, что вы можете добавить контекстное меню к средству визуализации элементов дерева.

Статья и комментарии на http://blog.arc90.com/2008/04/21/adding-a-contextmenu-to-a-flex-tree/ тоже стоит посмотреть.

0 голосов
/ 22 марта 2011

Я не могу быть уверен, поскольку весь код не там. Но вы, кажется, проигнорировали свое собственное исследование. Не используйте ваш новый компонент или что-либо, что «содержит» ваше дерево. Затем просто вставьте дерево в ваше приложение.

Также у меня есть воспоминания о TreeItemRenderer, который отличается от других компонентов UI. Возможно, сначала проверьте код «меню» с помощью Datagrid и убедитесь, что он работает. Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...