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>
但这些仅在Image
和Rectangle
等子元素上有效,而不是在空白空间上。
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:没有设置背景颜色(显式或通过样式等)的控件将默认设置为 null 的背景颜色 - 使其不可命中测试。
如果您将背景设置为“透明”(或任何非 null (x:Null
)),那么它将能够拾取鼠标事件
【讨论】:
感谢您的回答,但是 WPF 团队对此做出了多么愚蠢的设计决定。 这个建议是金币!我宁愿将 Canvas 背景默认为透明,而不是 x:null ,因为您通常希望在单击画布空白区域时触发事件(带有适当的参数)。默认的 x:null 行为应该是可选的,而不是可设置的。【参考方案2】:设置背景颜色。默认为null
。
例如使用Background="White"
。
【讨论】:
以上是关于WPF:画布鼠标事件未在空白处触发的主要内容,如果未能解决你的问题,请参考以下文章
WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题