WPF在鼠标下获取元素

时间:2008-09-05 13:28:16

标签: wpf element visualtreehelper visual-tree

WPF是否有办法在MouseMove事件上获取鼠标下的元素数组?

3 个答案:

答案 0 :(得分:41)

您还可以尝试使用Mouse.DirectlyOver属性来获取鼠标下最顶层的元素。

答案 1 :(得分:37)

来自“WPF Unleashed”,第383页:

  

视觉命中测试可以通知您   关于与a相交的所有 Visual   位置,[...]你必须使用[...]   接受a的[VisualTreeHelper.]HitTest方法   HitTestResultCallback代表。之前   此版本的HitTest返回,   委托每次调用一次   相关的Visual,从...开始   最顶端,最底部结束。

这种回调的签名是

HitTestResultBehavior Callback(HitTestResult result)

并且必须返回HitTestResultBehaviour.Continue以接收更多匹配,如下所示(来自MSDN上的链接页面):

// Return the result of the hit test to the callback.
public HitTestResultBehavior MyHitTestResult(HitTestResult result)
{
    // Add the hit test result to the list that will be processed after the enumeration.
    hitResultsList.Add(result.VisualHit);

    // Set the behavior to return visuals at all z-order levels.
    return HitTestResultBehavior.Continue;
}

有关详细信息,请参阅MSDN documentation for VisualTreeHelper.HitTest

答案 2 :(得分:3)