RoutedEventArgs vs EventArgs

Ber*_*ryl 18 .net wpf events routed-events

我正在学习WPF/Silverlight并在MS视频播放中看到现在建议使用RoutedEventArgsEventArgs; 虽然它没有说明原因.

我有一个win表单应用程序,它使用"小部件"的接口,试图不依赖于特定的显示技术(在Presenters/ViewModels中),所以如果我的IButton Click事件现在需要采取RoutedEventArgs现在我想它不是有用.

有人可以解释我是否应该切换到RoutedEventArgs所有情况,为什么?

顺便说一句,其他人是否有关于使用界面小部件的经验/意见,因为我正在描述它们?

Car*_*rlo 34

好吧,基本上是RoutedEvent通过Logical树遍历,从源元素到根元素(Bubble事件路径),或者从根元素到子级元素(Tunnel事件路径)不太常见.这意味着如果你有一个Button内部StackPanel,那它本身就在一个内部Grid; 如果你Click在控件中定义一个事件,它们都将触发它,除非其中一个处理它.

如果事件路由Bubble(命名为常规事件Click),它将:

Button -> StackPanel -> Grid

如果事件路由是Tunnel(命名PreviewClick),它将反过来:

Grid -> StackPanel -> Button

所以现在通过处理,它非常简单.如果这是一个Bubble路线和ButtonRoutedEventArgs.Handled为true,StackPanelGrid不会触发它.同样用RoutedEvent,如果Grid处理它时,StackPanelButton不会触发它.

简而言之,这是我的理解,为了简单起见,我避免使用一些东西.

我建议本章更好地理解这个WPF功能.

  • 我的头疼=( (3认同)