我的WPF项目中有一个画布控件:
<Canvas x:Name="mainCanvas" Margin="0"
MouseMove="mainCanvas_MouseMove"
MouseLeftButtonDown="mainCanvas_MouseLeftButtonDown"/>
在这个画布控件中,还有一些其他Canvas控件作为子画面。
问题是,当我单击这些子画布控件时,不会调用mainCanvas_MouseLeftButtonDown回调。我没有将这些儿童画布的鼠标事件绑定任何东西。
mainCanvas_MouseMove回调似乎工作正常,即使我将鼠标悬停在子画布上也会调用它。
我试着预测鼠标按下事件而没有运气。
我该如何解决这个问题?
答案 0 :(得分: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
}
当你摧毁你的孩子时,画布不要忘记取消注册事件。