我正在尝试在WPF Treeview中实现拖放行为。作为其中的一部分,如果在触发DragOver事件后鼠标已经在节点上一段时间,我需要扩展当前悬停的节点。
我已经能够在触发的节点上使用DelayedAction成功延迟扩展,但是一旦触发延迟动作,我就无法成功检查鼠标的当前位置。目前,即使鼠标已经移出节点并且释放了点击,在延迟之后,节点仍将展开。
我需要能够在延迟后检查鼠标的当前位置,并且只有在鼠标仍在节点上时才展开节点。
答案 0 :(得分:1)
我能够通过这里的另一个问题回答这个问题。我使用的主题可以在这里找到: How do I get the current mouse screen coordinates in WPF?
我使用Win32方法在延迟后获取正确的鼠标位置,并使用此方法通过命中测试获取鼠标下的当前TreeViewItem。
如果当前TreeViewItem与触发DragOver事件的TreeViewItem相同,那么我展开节点,否则什么都不做。