在WPF中,我们已经路由了事件。应该何时使用这些而不是常规事件?
答案 0 :(得分:11)
路由事件具有特殊行为,但如果您在引发它的元素上处理事件,则该行为在很大程度上是不可见的。
如果您使用任何建议的方案,路由事件变得强大的地方:在公共根目录中定义公共处理程序,合成您自己的控件或定义您自己的自定义控件类。
路由事件侦听器和路由事件源不需要在其层次结构中共享公共事件。任何UIElement或ContentElement都可以是任何路由事件的事件侦听器。因此,您可以使用整个工作API集中可用的完整路由事件集作为概念“接口”,从而应用程序中的不同元素可以交换事件信息。路由事件的这种“接口”概念特别适用于输入事件。
路由事件也可用于通过元素树进行通信,因为事件的事件数据会持续到路由中的每个元素。一个元素可能会更改事件数据中的某些内容,并且该更改可用于路径中的下一个元素。
除了路由方面之外,还有两个原因可以将任何给定的WPF事件实现为路由事件而不是标准CLR事件。如果您正在实施自己的活动,您也可以考虑以下原则:
答案 1 :(得分:0)
在WPF中,控制组合物被高度使用。它要求使用Routed事件,因为控件集的组合大部分时间都会暴露单个活动。