Wpf 单击背景画布上的事件

Wpf 单击背景画布上的事件,wpf,wpf-controls,mouseevent,Wpf,Wpf Controls,Mouseevent,我有UserControl,它包含画布(在网格中)。 当我刚刚单击canvas event PreviewMouseLeftButtonDown或MouseLeftButtonDown时效果很好,但当我设置canvas.Background=newImageBrush(imgs)时并尝试单击画布,事件不会引发。我试图为网格(画布父对象)创建相同的事件,但结果是相同的 UPD1:canvas在光标周围有子项-矩形(来自System.Windows.Shapes),可能它会以某种方式影响事件。在wp

我有UserControl,它包含画布(在网格中)。
当我刚刚单击canvas event PreviewMouseLeftButtonDown或MouseLeftButtonDown时效果很好,但当我设置
canvas.Background=newImageBrush(imgs)时并尝试单击画布,事件不会引发。我试图为网格(画布父对象)创建相同的事件,但结果是相同的


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

在wpf中,有两种可能的情况是命中测试(在某处单击鼠标)不起作用。这两件事都是故意的。我说的是当背景为NULL或将IshitteVisible属性设置为false时

在任何其他情况下,点击测试/点击将起作用

我想你的背景是空的。可能imgs抛出的错误将在渲染时在内部的空try/catch块中捕获

告诉我们画布的背景属性是否为空

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

编辑:

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


一旦您将背景更改为黄色,单击将起作用,您的处理程序将被调用。

欢迎使用StackOverflow。按原样,请向我们展示您使用的代码,以帮助我们充分了解您的问题并为您找到解决方案。当我启动progran时,IshitteVisible设置为“true”,canvas背景为空,有关鼠标单击的事件是存在的,但当我将一些图像设置为背景并开始在光标周围绘制矩形时,事件不再出现。关于Snoop:是的,我知道,但是当我选择我的应用程序并按下“Snoop”按钮时,什么都没有发生。我编辑了我的答案。默认情况下,画布不会与任何单击事件或鼠标悬停按钮向下事件混在一起。谢谢,我无意中编辑了错误的帖子,对此表示歉意。我发现了一个决定:我刚刚添加到矩形对象事件MouseLeftButtonDown,如下所示:
r.MouseLeftButtonDown+=MouseLeftButtonDown现在一切正常。