一位同事和我在聊天路由事件,我们想出了一些没有多大意义的事情。主要是,Direct
事件的目的是什么,以及为什么LeftMouseButtonDown
和PreviewLeftMouseButtonDown
直接事件,而不是鼓泡和隧道分别?直接路由事件问题
根据文档,LeftMouseButtonDown
(和预览)事件看起来像冒泡和隧道事件一样,除了事件在这些事件遍历树时引发和重新渲染之外。由于直接事件只能由事件源处理,因此任何UIElement
都可以处理直接事件,因为每个事件都在引发事件,因此也是源。 (除非重新举办活动与举办活动不同?)。为什么它们不像其他许多类似的事件那样是隧道式的和冒泡的?
我和我的同事都没有想出一个使用案例,我们将使用直接策略创建一个自定义事件(尽管我们想出了一些用于隧道和冒泡的),但最常见的一个是LeftMouseButtonDown
事件(如果不是最常见的)就是使用这种策略。
任何人对这背后的理性有任何想法?
谢谢!