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

tro*_*ous 4 wpf mouse visualtreehelper event-bubbling ismouseover

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

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

我正在做的总结:

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

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

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

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

Fed*_*gui 6

使用该Mouse.DirectlyOver属性:

var UIElement = Mouse.DirectlyOver as UIElement;
Run Code Online (Sandbox Code Playgroud)

  • 不过,这仍然抓住了视觉元素。例如...如果我将鼠标悬停在带有默认模板的“按钮”上,如果我将鼠标放在文本(内容)上,它将返回给我该特定的文本块。我基本上希望它返回按钮而不是单个视觉元素。 (2认同)