我有UserControl,其中包含Canvas(在Grid中)
当我刚刚点击canvas事件时,PreviewMouseLeftButtonDown或MouseLeftButtonDown工作正常,但是当我设置canvas.Background = new ImageBrush(imgs);
并尝试单击画布时,事件不会提升。我试图为网格(画布父级)制作相同的事件,但结果是相同的。
UPD1:canvas有子项 - 矩形(来自System.Windows.Shapes)光标周围,也许它会以某种方式影响事件。
答案 0 :(得分:1)
在wpf中,有两种可能的情况,即命中测试(在某处单击鼠标)不起作用。这两个是这样的,它是设计的。我在讨论当Background为NULL或者你将属性IsHitTestVisible设置为false时。
在任何其他情况下,点击测试/点击都可以。
我假设您的背景以某种方式为空。也许imgs会抛出错误,这会在渲染时在内部的空try / catch块中捕获。
告诉我们画布的背景属性为null?
有一个很好的工具叫做Snoop,它允许你窥探一个wpf应用程序并在运行时更改属性。使用该工具更改背景并告诉我们结果。
修改强>
首先,Canvas Background的默认值为null,因此默认情况下,您可以在Canvas上按照您的意愿单击,但不会发生任何事情。
一旦你将背景改为黄色,它就会点击它,你的处理程序就会被调用。