0

I have UserControl, which contains Canvas (in Grid).
When I just clicked on canvas event PreviewMouseLeftButtonDown or MouseLeftButtonDown works perfectly, but when I set canvas.Background = new ImageBrush(imgs); and try to click on canvas, events doesn't raising. I tried to make same events for grid (canvas parent), but result was the same.

UPD1: canvas has children - rectangle (from System.Windows.Shapes) around cursor, maybe it somehow affect on events.

4

1 回答 1

1

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

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

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

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

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

编辑:

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

只要您将背景更改为黄色,点击就会起作用,并且您的处理程序将被调用。

于 2013-10-19T12:10:17.773 回答