MouseLeftButtonUpEvent&在画布中冒泡

时间:2010-12-30 06:40:51

标签: silverlight events windows-phone-7

我想我疯了......

我有Canvas和MouseMove&的事件处理程序。的MouseLeftButtonUp。 但是,当光标位于画布内的TextBlock上时,不会触发MouseLeftButtonUp。 (当我在画布的空白处释放鼠标按钮时,它会发射很好)

我尝试通过AddHandler附加处理程序并使用常规+ =语法,似乎没有任何工作。 我尝试使用Canvas.CaptureMouse()但它似乎也没有工作(CaptureMouse返回true btw)。

当MouseLeftButtonUp在Canvas中的TextBlock(或任何其他具有IsHitTestVisible = true的元素)上发生时,它不想传播给它的父级。

请帮忙。

2 个答案:

答案 0 :(得分:2)

首先,我想说你不会发疯。我之前在Silverlight应用程序中看过这个。 Silverlight有一些有趣的事件策略。 Silverlight事件遵循路由事件的冒泡方法,但不是所有事件(msdn has some information on this)。您正在侦听的事件位于该列表中,但它们由TextBlock处理。大多数UIElements都具有IsHitTestVisible = true,因此鼠标事件和其他事件由控件捕获,而不是冒泡到其父级。设置IsHitTestVisible = false应该可以解决问题。除此之外,我可以告诉你在需要IsHitTestVisible = true时我试图克服这个问题。

  1. 从TextBlock上的父级设置事件hanlder。您需要为画布中的每个控件执行此操作。
  2. 尝试通过扩展类触发事件。我无法让这个工作,因为我无法使用反射来发射事件。

答案 1 :(得分:0)

你提到你尝试过AddHandler - 你是否尝试过接受两个参数的AddHandler重载,第二个是“true”以表示你想要处理事件?