如何以编程方式在Flex应用程序内的树控件中进入编辑模式

时间:2010-01-17 09:22:17

标签: flex editmode

我的Flex应用程序中有一个Tree Control,我想在树项上双击时编辑它。我发现属性doubleClickEnabled =“true”,doubleClick =“startEditMode()”和editable =“true”。使用这些功能,我可以检测到双击,我可以基于双击将editable属性更改为true。

问题是,在我双击一个项目后,我必须再次单击才能真正进入编辑模式。这似乎并不直观......

是否有人知道该问题的解决方案?

由于 马库斯

4 个答案:

答案 0 :(得分:1)

Makrus,

查看发布于:

的解决方案

http://www.sephiroth.it/weblog/archives/2009/12/flex_3_tree_double-click_to_edit.php

应该就是你想要的!

-David

答案 1 :(得分:0)

点击List并将Tree设置为itemRenderer后,editable(超级true)进入编辑模式。在您的情况下,editable为false,当您单击它时 - 仅在doubleClick事件处理程序中将其设置为true。所以这是预期的行为,但在这种情况下并不需要。

尝试此操作:在将click设置为itemRenderer后,从dobleClick事件处理程序中点击editable发送true

clickedItemRenderer.dispatchEvent(new MouseEvent(MouseEvent.CLICK));

我没有对此进行过测试,但我认为这可能会让flex认为在将editable设置为true后再次点击该项目。如果这不起作用,请发布一个有效的代码,以便我们可以调整它并尝试提出解决方案。

答案 2 :(得分:0)

答案 3 :(得分:0)

这是适合我的解决方案:

        private var ignoreEditing:Boolean = true;
        protected function doubleClickHandler(event: MouseEvent ):void
        {
            ignoreEditing = false;
        }

        protected function itemEditBeginningHandler(event:ListEvent):void
        {
            if(ignoreEditing){
                event.preventDefault();
            }
            else{
                ignoreEditing = true;
            }
        }

<mx:Tree
    doubleClickEnabled="true" 
    editable="true"
    itemEditBegin="itemEditBeginningHandler(event)" 
    doubleClick="doubleClickHandler(event)"
    />