36

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

4

3 回答 3

43

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

于 2008-09-05T21:21:31.687 回答
40

来自“ WPF Unleashed ”,第 383 页:

视觉命中测试可以通知您与某个位置相交的所有 Visuals,[...] 您必须使用 [...] [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 文档以获取VisualTreeHelper.HitTest.

于 2008-10-08T11:59:34.923 回答
4

你可以使用VisualTreeHelper.HitTest吗?

http://lukieb.blogspot.com/2008/07/visualtreehelperhittest.html

于 2008-09-05T13:30:41.023 回答