1

我的 WPF 项目中有一个画布控件:

<Canvas x:Name="mainCanvas" Margin="0" 
        MouseMove="mainCanvas_MouseMove"     
        MouseLeftButtonDown="mainCanvas_MouseLeftButtonDown"/>

在这个画布控件中,还有一些其他的画布控件作为子控件。

问题是当我点击这些子画布控件时,没有调用 mainCanvas_MouseLeftButtonDown 回调。我没有将任何东西绑定到这些子画布的鼠标按下事件。

mainCanvas_MouseMove 回调似乎工作正常,即使我将鼠标悬停在子画布上也会调用它。

我尝试预览鼠标按下事件但没有运气。

我怎么解决这个问题?

4

1 回答 1

0

事件并没有冒泡,因为视觉树上的某个人已经处理了它们。

你应该使用snoop来查看谁处理了这些事件

否则只需将子画布注册到 eventHandlers

public override Canvas CreateCanvas()
{
  Canvas canvas = new Canvas();

  canvas.MouseMove +=new MouseEventHandler(mainCanvas_MouseMove);
  canvas .MouseLeftButtonDown +=new MouseButtonEventHandler(mainCanvas_MouseLeftButtonDown);

 // your code here
}

当你摧毁你的孩子画布时,不要忘记取消注册事件。

于 2013-05-26T07:45:44.853 回答