首页 文章

在WPF中获取鼠标下的逻辑UIElement

提问于
浏览
4

似乎在Mouse下检索元素的所有方法都与Visual Hit测试有关 .

是否有一些我遗漏的机制可以让我 grab 实际 UIElement ,它代表 HitTest 返回的当前可视树?

我正在做的总结:

我有一个自定义工具提示类,它依赖于基于鼠标结束的UIElement做的事情 .

简单地说,它挂钩到拥有Window的 PreviewMouseMove 事件并更新"current Item" . 此当前项应表示鼠标当前位于顶部的 UIElement .

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

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

2 回答

  • 2

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

    1)找到可视树元素

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

    3)如果它存在,你就找到了答案 .

    4)否则你将不得不调用 VisualTreeHelper.GetParent() 并继续算法 .

    Ps, LogicalTreeHelper.GetParent(your visual tree element) 可能也有效 .

  • 6

    使用Mouse.DirectlyOver属性:

    var UIElement = Mouse.DirectlyOver as UIElement;
    

相关问题