鼠标事件未到达 UIElement

发布于 2024-09-28 08:22:25 字数 299 浏览 8 评论 0原文

我有一个由 System.Windows.Controls.Canvas 对象组成的 6x8 网格。左上角画布不接收鼠标事件,而其他画布则接收鼠标事件。我尝试了 OnMouseMove 和 OnMouseClick 事件。

子对象未处理该事件,因为 System.Windows.Media.VisualTreeHelper#GetChildrenCount() 不显示任何子对象。我也无法捕捉到 PreviewOnMouseMove 。我的画布前面是否可以有一些(可能是透明的)控件优先?

I have a 6x8 grid of System.Windows.Controls.Canvas objects. The top left canvas does not receive mouse events while all the others do. I tried OnMouseMove and OnMouseClick events.

A child object isn't handling the event because System.Windows.Media.VisualTreeHelper#GetChildrenCount() doesn't show any children. I couldn't catch PreviewOnMouseMove either. Can there be some (perhaps transparent) control in front of my canvas that is taking precedence?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若有似无的小暗淡 2024-10-05 08:22:25

终于找到解决办法了。每个Canvas都有Adorner。根据 这篇 MSDN 文章,装饰器在底层 UI 元素之前接收鼠标事件做。我将所有装饰器的 IsHitTestVisible 属性设置为 false

Finally found a solution. Each of the Canvases have Adorners. According to this MSDN article, adorners receive mouse events before the underlying UI element does. I set the IsHitTestVisible property of all my adorners to false.

网白 2024-10-05 08:22:25

我希望这对您有帮助,只需将 CanvasBackground 属性设置为 Transparent 值即可:

Background="Transparent"

祝你好运!

I hope this helps you, Just set Transparent value to the Background property for the Canvas:

Background="Transparent"

Good luck!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文