2010-07-26 37 views
4

一位同事和我在聊天路由事件,我们想出了一些没有多大意义的事情。主要是,Direct事件的目的是什么,以及为什么LeftMouseButtonDownPreviewLeftMouseButtonDown直接事件,而不是鼓泡和隧道分别?直接路由事件问题

根据文档,LeftMouseButtonDown(和预览)事件看起来像冒泡和隧道事件一样,除了事件在这些事件遍历树时引发和重新渲染之外。由于直接事件只能由事件源处理,因此任何UIElement都可以处理直接事件,因为每个事件都在引发事件,因此也是源。 (除非重新举办活动与举办活动不同?)。为什么它们不像其他许多类似的事件那样是隧道式的和冒泡的?

我和我的同事都没有想出一个使用案例,我们将使用直接策略创建一个自定义事件(尽管我们想出了一些用于隧道和冒泡的),但最常见的一个是LeftMouseButtonDown事件(如果不是最常见的)就是使用这种策略。

任何人对这背后的理性有任何想法?

谢谢!

回答

2

我的猜测是性能,对于同一事物有多个事件需要考虑。

已经有一个MouseDown的事件,路由两者,LeftMouseDown没有多大意义。最后,哪个会先开火,并取消\处理第一个阻止另一个?听起来好像两次处理同一事件太容易了。