在 WPF 中,我们有路由事件。什么时候应该使用这些来代替常规事件?
最佳答案
路由事件有特殊的行为,但如果您在引发它的元素上处理事件,则该行为在很大程度上是不可见的。
如果您使用任何建议的场景,路由事件变得强大的地方:在公共(public)根中定义公共(public)处理程序,合成您自己的控件,或定义您自己的自定义控件类。
路由事件监听器和路由事件源不需要在其层次结构中共享公共(public)事件。任意 UIElement或 ContentElement可以是任何路由事件的事件监听器。因此,您可以将整个工作 API 集中可用的全套路由事件用作概念“接口(interface)”,从而应用程序中的不同元素可以交换事件信息。这种用于路由事件的“接口(interface)”概念特别适用于输入事件。
路由事件也可用于通过元素树进行通信,因为事件的事件数据被永久保存到路由中的每个元素。一个元素可以更改事件数据中的某些内容,并且该更改将可用于路由中的下一个元素。
除了路由方面,还有其他两个原因可以将任何给定的 WPF 事件实现为路由事件而不是标准 CLR 事件。如果您正在实现自己的事件,您还可以考虑以下原则:
来源:MSDN: Routed Events Overview
关于WPF:路由事件还是常规事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/816392/