WPF:Canvas上的鼠标事件在空白区域不触发

44

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

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

但是这些只对像ImageRectangle这样的子元素起作用,而不对空白区域起作用。我该如何解决?

2个回答

99

如果控件没有设置任何背景颜色(明确地或通过样式等方式),则其默认背景颜色为 null,因此不可进行命中测试。

如果将背景设置为“透明”(或任何其他非 null 的值 ({x:Null})),那么它将能够捕获鼠标事件。


18
感谢你的回答,但 WPF 团队做出的那个设计决策真是太愚蠢了。 - cdiggins
1
这个建议就像一枚金币,非常有价值!我更倾向于将画布背景默认设置为透明,而不是{x:null}。因为通常情况下,当你单击画布的空白处时,你期望会触发事件(带有适当的参数)。默认的 x:null 行为应该是可选设置的。 - Sold Out

5

设置背景颜色。默认值为null

例如,使用Background="White"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接