直接路由事件问题

时间:2010-07-26 21:04:57

标签: wpf events routed-events

一位同事和我正在谈论路由事件,我们提出了一些没有多大意义的事情。主要是Direct事件的目的是什么,为什么LeftMouseButtonDownPreviewLeftMouseButtonDown分别是直接事件而不是冒泡和隧道事件?

根据文档,LeftMouseButtonDown(和预览)事件似乎表现为冒泡和隧道事件,除了事件在这些事件遍历树时被引发和重新引发。由于直接事件只能由事件源处理,因此任何UIElement都可以处理直接事件,因为每个事件都会引发事件,因此也是源事件。 (除非重新加注事件与提高不同?)。为什么这些不像其他许多类似事件一样窜动和冒泡?

我的同事和我都不能提出一个用例,我们可以使用直接策略创建一个自定义事件(虽然我们提出了一些用于隧道和冒泡)但是LeftMouseButtonDown,其中一个最常见的事件(如果不是最常见的)是使用这种策略。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

我的猜测是性能,并且考虑为同一事件设置多个事件。

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