RoutedEventArgs vs EventArgs

前端 未结 3 1854
说谎
说谎 2020-12-30 02:15

I am learning WPF / Silverlight and saw in an MS vidcast that it is now recommended to use RoutedEventArgs over EventArgs; although it didn\'t say

3条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-30 02:47

    Well, basically a RoutedEvent travels through the Logical tree, either from the source element to root element (Bubble event route) or, less frequently from root element to sub levels elements (Tunnel event route). What this means is that if you have a Button inside of a StackPanel, that itself is inside of a Grid; if you define a Click event in the controls they will all trigger it unless one of them handles it.

    If the event route is Bubble (named as a regular event Click), it will go:

    Button -> StackPanel -> Grid

    If the event route is Tunnel (named PreviewClick), it will go the other way around:

    Grid -> StackPanel -> Button

    So now with the handling, it's pretty simple. If it's a Bubble route and the Button sets the RoutedEventArgs.Handled to true, that StackPanel and Grid will not trigger it. Same with the RoutedEvent, if the Grid handles it, the StackPanel and Button will not trigger it.

    This is my understanding in a nutshell, I avoided some stuff for simplicity.

    I recommend this chapter for better understanding of this WPF feature.

提交回复
热议问题