了解路由事件:为什么我需要两者,冒泡和隧道事件?

时间:2010-08-10 15:43:17

标签: wpf routed-events

我阅读了this关于路由事件的好文章,我理解为什么我们有时需要泡泡事件,有时我们需要隧道事件。

我不明白的是,当我们使用隧道事件时,为什么在处理或到达源元素之后,仍然会启动冒泡事件?

提前致谢!

2 个答案:

答案 0 :(得分:5)

文章说,如果您将图像放在按钮上,并且单击该图像,则会触发该图像的隧道事件。但很有可能你也想要处理那个点击,好像按钮本身被点击一样,所以也会触发一个气泡事件,它会冒泡到按钮本身的click事件(因为按钮拥有图像),所以您可以使用按钮的常用事件处理程序单击按钮来处理图像。

答案 1 :(得分:2)

我还想补充说,两者(隧道和泡泡)的事件是不同的。 对于隧道,我们使用PreviewXXX(例如:PreviewMouseDown),对于气泡事件,我们使用XXX(例如:MouseDown)事件。

按顺序,Tunnel事件首先从应用程序的根开始触发,然后在源处结束。泡泡事件被触发。

同时举办这两项活动是完全合理的。