似乎在Mouse下检索元素的所有方法都与Visual Hit测试有关 .
是否有一些我遗漏的机制可以让我 grab 实际 UIElement
,它代表 HitTest
返回的当前可视树?
我正在做的总结:
我有一个自定义工具提示类,它依赖于基于鼠标结束的UIElement做的事情 .
简单地说,它挂钩到拥有Window的 PreviewMouseMove
事件并更新"current Item" . 此当前项应表示鼠标当前位于顶部的 UIElement
.
不幸的是,我遇到的所有 Mouse.DirectlyOver
, VisualTreeHelper.HitTest
(包括回调)都不起作用 .
任何人都可以在Window的 MouseMove
事件中提供有关如何在WPF中完成看似简单的任务的见解吗?
2 回答
我不知道任何明确的方式,但这个想法很简单,
1)找到可视树元素
2)测试元素是否存在于逻辑树中,
3)如果它存在,你就找到了答案 .
4)否则你将不得不调用
VisualTreeHelper.GetParent()
并继续算法 .Ps,
LogicalTreeHelper.GetParent(your visual tree element)
可能也有效 .使用Mouse.DirectlyOver属性: