在我的WPF项目中有一个画布控件:
<Canvas x:Name="mainCanvas" Margin="0"
MouseMove="mainCanvas_MouseMove"
MouseLeftButtonDown="mainCanvas_MouseLeftButtonDown"/>
在这个canvas控件中,有一些其他的canvas控件作为子控件。
问题是,当我点击这些子画布控件,mainCanvas_MouseLeftButtonDown回调没有被调用。我没有将任何东西绑定到这些子画布的鼠标按下事件。
mainCanvas_MouseMove回调似乎工作得很好,虽然,它被称为即使当我鼠标在子画布上。
我试着预览鼠标按下事件,没有运气。
我该如何解决这个问题?
事件没有冒泡,因为有人在可视化树处理它们。
您应该使用snoop查看谁处理了事件
否则只需将子画布注册到eventhandler
public override Canvas CreateCanvas()
{
Canvas canvas = new Canvas();
canvas.MouseMove +=new MouseEventHandler(mainCanvas_MouseMove);
canvas .MouseLeftButtonDown +=new MouseButtonEventHandler(mainCanvas_MouseLeftButtonDown);
// your code here
}
当你销毁你的子画布时,不要忘记取消事件的注册。