代码之家  ›  专栏  ›  技术社区  ›  user275587

WPF,TreeView Bug,无法在从TreeView中移除项后选择根项

  •  0
  • user275587  · 技术社区  · 14 年前

    我在三层树视图中发现了一个非常奇怪的虫子。它是间歇性的,我找不到如何始终如一地复制它。以编程方式删除后,添加然后删除一些第三级项目,当我单击根项目时,它没有被选中。它仍然可以展开/折叠,但不能通过鼠标单击进行选择,也不会触发itemselectionChange事件。您可以单击选择第二级或第三级项目,然后您最终可以选择根项目。我尝试在删除后为所有项目设置isselected=false,并尝试在删除项目时进行良好的清理,但没有帮助。有人碰到那个虫子吗?你有什么建议可以删除这个bug吗?

    1 回复  |  直到 13 年前
        1
  •  0
  •   Alex G    13 年前

    在程序化地设置isselected到节点之后发生在我身上。然后我不能单击选择上一个节点。

    [编辑]

    终于弄明白发生了什么事。似乎设置isselected属性还不够,因为树的内部逻辑焦点仍然在旧的选定元素上。

    事件已发送到树项,但由于它在内部已经具有逻辑焦点,因此它不会触发焦点更改(我怀疑树知道何时更改所选项目)。

    如果我在树节点上调用focus,并将isselected设置为true,那么它可以正常工作。

    (=)=

    对于新添加的元素,是否将isselected设置为true?如果是这样,也要做一个焦点,如:

    DependencyObject nodeVisualContainer = mTreeControl.ItemContainerGenerator.ContainerFromItem(nodeToSelect);
                if (nodeVisualContainer is UIElement)
                    ((UIElement)nodeVisualContainer).Focus();
    

    注意:这只对元素进行逻辑聚焦。键盘焦点不会受到影响。