如何在WPF中通过HitTesting使用坐标/点获取TreeViewItem?

我试图在鼠标下获取TreeViewItem ,但无法找到方法。

目前我正在使用这个:

 Layer GetItemAtLocation ( Point point ) { HitTestResult result = VisualTreeHelper.HitTest ( this, point ); FrameworkElement element = result.VisualHit as FrameworkElement; if ( element != null ) return element.DataContext as Layer; return null; } 

此方法很有用,但不会在鼠标下提供TreeViewItem

关于如何做到这一点的任何想法?

你没有指明是什么导致你需要这个,这会有所帮助。

这有点讨厌,但你可以这样做:

 IInputElement dropNode = tree.InputHitTest(point); 

这可能会给你一个TextBlock,所以你必须使用VisualTreeHelper.GetParent()来向上浏览TextBlock,ContentPresenter,Border,Grid,最后是TreeViewItem。

这肯定不是最好的方法,但它应该工作。

根据您的工作情况,Mike Hillberg的博客提供了一个附加属性方法,用于触发器。 看到这里

在他的例子中,当鼠标hover在它上面时,他正在将TreeViewItem变为绿色。

    

MyTreeViewHelper类跟踪MouseEnter / MouseLeave事件,并提供一个可用于触发器和事物的很好的属性,如上所述。

我希望有所帮助。