wpf - 直接路由事件问题

标签 wpf events routed-events

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

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

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

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

谢谢!

最佳答案

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

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

关于wpf - 直接路由事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3339006/

相关文章:

c - 列出 ETW 提供程序的事件类

javascript - 在JavaScript中将多个事件监听器添加到元素

c# - WPF/C# 中异步任务和 RoutedEventHandler 的问题

c# - 检查 RoutedEvent 是否有任何处理程序

WPF TreeView : Using ItemTemplateSelector and ItemContainerStyle Not Working At Same Time

wpf - F# wpf 异步命令完成状态

javascript - 如何在选项标签中触发事件?

wpf - 如何使用多重绑定(bind)将参数传递给命令?

c# - 在现有图像文件之上写文字?

c# - 在选择更改事件上禁用事件冒泡 - WPF