我想我疯了......
我有Canvas和MouseMove&的事件处理程序。的MouseLeftButtonUp。 但是,当光标位于画布内的TextBlock上时,不会触发MouseLeftButtonUp。 (当我在画布的空白处释放鼠标按钮时,它会发射很好)
我尝试通过AddHandler附加处理程序并使用常规+ =语法,似乎没有任何工作。 我尝试使用Canvas.CaptureMouse()但它似乎也没有工作(CaptureMouse返回true btw)。
当MouseLeftButtonUp在Canvas中的TextBlock(或任何其他具有IsHitTestVisible = true的元素)上发生时,它不想传播给它的父级。
请帮忙。
答案 0 :(得分:2)
首先,我想说你不会发疯。我之前在Silverlight应用程序中看过这个。 Silverlight有一些有趣的事件策略。 Silverlight事件遵循路由事件的冒泡方法,但不是所有事件(msdn has some information on this)。您正在侦听的事件位于该列表中,但它们由TextBlock处理。大多数UIElements都具有IsHitTestVisible = true,因此鼠标事件和其他事件由控件捕获,而不是冒泡到其父级。设置IsHitTestVisible = false应该可以解决问题。除此之外,我可以告诉你在需要IsHitTestVisible = true时我试图克服这个问题。
答案 1 :(得分:0)
你提到你尝试过AddHandler - 你是否尝试过接受两个参数的AddHandler重载,第二个是“true”以表示你想要处理事件?