我的Flex应用程序中有一个Tree Control,我想在树项上双击时编辑它。我发现属性doubleClickEnabled =“true”,doubleClick =“startEditMode()”和editable =“true”。使用这些功能,我可以检测到双击,我可以基于双击将editable属性更改为true。
问题是,在我双击一个项目后,我必须再次单击才能真正进入编辑模式。这似乎并不直观......
是否有人知道该问题的解决方案?
由于 马库斯
答案 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)
http://tush.wordpress.com/2008/10/06/flex-double-click-to-edit-functionality-for-list-control/
这就像一个魅力...只是试了一下。
答案 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)"
/>