4

似乎所有在鼠标下检索元素的方式都与视觉命中测试有关。

是否有一些我缺少的机制可以让我获取UIElement代表返回的当前视觉树的实际HitTest值?

我在做什么的总结:

我有一个自定义工具提示类,它依赖于基于鼠标悬停的 UIElement 做一些事情。

简单地说,它挂钩到拥有窗口的PreviewMouseMove事件并更新一个“当前项目”。这个当前项目应该代表UIElement鼠标当前在上面的那个。

不幸的是,我遇到的所有Mouse.DirectlyOver, VisualTreeHelper.HitTest(包括回调)都不起作用。

任何人都可以提供有关如何在 WindowMouseMove事件中完成 WPF 中看似简单的任务的见解吗?

4

2 回答 2

6

使用Mouse.DirectlyOver属性:

var UIElement = Mouse.DirectlyOver as UIElement;
于 2013-05-13T15:32:11.753 回答
2

我不知道任何明确的方式,但这个想法很简单,

1) 找到可视化树元素

2)测试元素是否存在于逻辑树中,

3)如果它存在,你已经找到了答案。

4)否则你将不得不打电话VisualTreeHelper.GetParent()并继续算法。

Ps,LogicalTreeHelper.GetParent(your visual tree element)可能也可以。

于 2013-06-18T08:28:03.283 回答