在背景上的画布上单击事件

时间:2013-10-18 16:02:20

标签: wpf wpf-controls mouseevent

我有UserControl,其中包含Canvas(在Grid中) 当我刚刚点击canvas事件时,PreviewMouseLeftButtonDown或MouseLeftButtonDown工作正常,但是当我设置canvas.Background = new ImageBrush(imgs);并尝试单击画布时,事件不会提升。我试图为网格(画布父级)制作相同的事件,但结果是相同的。

UPD1:canvas有子项 - 矩形(来自System.Windows.Shapes)光标周围,也许它会以某种方式影响事件。

1 个答案:

答案 0 :(得分:1)

在wpf中,有两种可能的情况,即命中测试(在某处单击鼠标)不起作用。这两个是这样的,它是设计的。我在讨论当Background为NULL或者你将属性IsHitTestVisible设置为false时。

在任何其他情况下,点击测试/点击都可以。

我假设您的背景以某种方式为空。也许imgs会抛出错误,这会在渲染时在内部的空try / catch块中捕获。

告诉我们画布的背景属性为null?

有一个很好的工具叫做Snoop,它允许你窥探一个wpf应用程序并在运行时更改属性。使用该工具更改背景并告诉我们结果。

修改

首先,Canvas Background的默认值为null,因此默认情况下,您可以在Canvas上按照您的意愿单击,但不会发生任何事情。

一旦你将背景改为黄色,它就会点击它,你的处理程序就会被调用。