4

我和一位同事正在谈论路由事件,我们想出了一些没有多大意义的事情。首先,事件的目的是什么Direct,为什么两者都是直接事件而不是冒泡和隧道LeftMouseButtonDownPreviewLeftMouseButtonDown

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

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

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

谢谢!

4

1 回答 1

2

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

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

于 2010-08-02T19:59:33.317 回答