WPF:画布鼠标事件未在空白处触发

Posted

技术标签:

【中文标题】WPF:画布鼠标事件未在空白处触发【英文标题】:WPF: Canvas mouse events not firing on empty space 【发布时间】:2022-01-10 05:04:24 【问题描述】:

我在Canvas 上设置了鼠标事件,如下所示:

<Canvas MouseUp="CanvasUp" MouseDown="CanvasDown" MouseMove="CanvasMove">
...
</Canvas>

但这些仅在ImageRectangle 等子元素上有效,而不是在空白空间上。 我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

没有设置背景颜色(显式或通过样式等)的控件将默认设置为 null 的背景颜色 - 使其不可命中测试。

如果您将背景设置为“透明”(或任何非 null (x:Null)),那么它将能够拾取鼠标事件

【讨论】:

感谢您的回答,但是 WPF 团队对此做出了多么愚蠢的设计决定。 这个建议是金币!我宁愿将 Canvas 背景默认为透明,而不是 x:null ,因为您通常希望在单击画布空白区域时触发事件(带有适当的参数)。默认的 x:null 行为应该是可选的,而不是可设置的。【参考方案2】:

设置背景颜色。默认为null

例如使用Background="White"

【讨论】:

以上是关于WPF:画布鼠标事件未在空白处触发的主要内容,如果未能解决你的问题,请参考以下文章

WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题

如何:当鼠标位于 WPF 边框的边和角之一时触发事件

WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

WPF 鼠标按下事件不会触发

如何根据鼠标点击位置参数触发Javascript中的事件?

使用Jquery或Javascript触发mousemove事件