如何在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事件,并提供一个可用于触发器和事物的很好的属性,如上所述。
我希望有所帮助。