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:画布鼠标事件未在空白处触发的主要内容,如果未能解决你的问题,请参考以下文章