RoutedEventArgs 與 EventArgs
我正在學習 WPF/Silverlight 並在 MS 影片廣播中看到現在建議使用
RoutedEventArgsoverEventArgs;雖然它沒有確切說明原因。我有一個 win forms 應用程序,它使用“小元件”介面,試圖不綁定到特定的顯示技術(在 Presenters / ViewModels 中),所以如果我的 IButton Click 事件現在需要採取
RoutedEventArgs現在我猜它不是一樣有用。有人可以解釋一下我是否應該在所有情況下都切換到
RoutedEventArgs,為什麼?順便說一句,在我描述的時候,還有其他人有關於使用界面小元件的經驗/意見嗎?
好吧,基本上 a
RoutedEvent遍歷Logical樹,從源元素到根元素(Bubble事件路由),或者從根元素到子級別元素(Tunnel事件路由)的頻率較低。這意味著如果你有 a 的Button內部StackPanel,那它本身就在 a 的內部Grid;如果您在控制項中定義一個事件,除非其中一個處理Click它,否則它們都會觸發它。如果事件路由是
Bubble(命名為正常事件Click),它將去:
Button -> StackPanel -> Grid如果事件路由是
Tunnel(命名PreviewClick的),它會反過來:
Grid -> StackPanel -> Button所以現在有了處理,這很簡單。如果它是一條
Bubble路線並且將其Button設置RoutedEventArgs.Handled為 true,StackPanel則Grid不會觸發它。與 相同RoutedEvent,如果Grid處理它,StackPanel則Button不會觸發它。簡而言之,這是我的理解,為了簡單起見,我避免了一些東西。
我推薦本章以便更好地理解這個 WPF 特性。