Dot-Net

RoutedEventArgs 與 EventArgs

  • September 15, 2009

我正在學習 WPF/Silverlight 並在 MS 影片廣播中看到現在建議使用RoutedEventArgsover EventArgs;雖然它沒有確切說明原因。

我有一個 win forms 應用程序,它使用“小元件”介面,試圖不綁定到特定的顯示技術(在 Presenters / ViewModels 中),所以如果我的 IButton Click 事件現在需要採取RoutedEventArgs現在我猜它不是一樣有用。

有人可以解釋一下我是否應該在所有情況下都切換到RoutedEventArgs,為什麼?

順便說一句,在我描述的時候,還有其他人有關於使用界面小元件的經驗/意見嗎?

好吧,基本上 aRoutedEvent遍歷Logical樹,從源元素到根元素(Bubble事件路由),或者從根元素到子級別元素(Tunnel事件路由)的頻率較低。這意味著如果你有 a 的Button內部StackPanel,那它本身就在 a 的內部Grid;如果您在控制項中定義一個事件,除非其中一個處理Click它,否則它們都會觸發它。

如果事件路由是Bubble(命名為正常事件Click),它將去:

Button -> StackPanel -> Grid

如果事件路由是Tunnel(命名PreviewClick的),它會反過來:

Grid -> StackPanel -> Button

所以現在有了處理,這很簡單。如果它是一條Bubble路線並且將其Button設置RoutedEventArgs.Handled為 true,StackPanelGrid不會觸發它。與 相同RoutedEvent,如果Grid處理它,StackPanelButton不會觸發它。

簡而言之,這是我的理解,為了簡單起見,我避免了一些東西。

我推薦本章以便更好地理解這個 WPF 特性。

引用自:https://stackoverflow.com/questions/1428037