學習WPF——了解路由事件


入門
我們先來看一個例子
前台代碼:
后台代碼:
點擊按鈕的運行效果
第一個彈出窗口
第二個彈出窗口:
第三個彈出窗口:
說明
當點擊按鈕之后,先觸發按鈕的click事件,再上查找,發現stackpanel也注冊了該事件,那么接着觸發StackPanel的Button.Click事件,依次再觸發Grid的 Button.Click事件,這就是最基本的事件路由,事件路由的策略是右內向外的
如果不希望在XAML中注冊路由事件,那么也可以通過編碼的方式注冊路由事件如下所示
如果想終止事件的向上傳遞,可以使用這種辦法
上面的例子是一個冒泡路由事件,是由內向外傳遞的事件
WPF中還有一種事件是隧道路由事件,是由外向內傳遞的事件

路由事件解析

在上面的例子中我們看到了Button類的路由事件Click
下面我們來剖析源碼,看看Button是如何注冊這個路由事件的
要使用路由事件,必須先定義路由事件
首先在Button類的基類ButtonBase中發現了路由事件的定義ClickEvent
代碼中使用EventManager.RegisterRoutedEvent注冊了路由事件
這個方法包含事件的名稱、路由類型等內容
定義了ClickEvent事件之后還需要對事件進行封裝
這里使用到了.Net的事件封裝器,
AddHandler和RemoveHandler用於添加和刪除已注冊的調用程序
修改記錄
2015-1-5:完成一部分內容
2015-1-14:完成全部內容
參考資料
《Pro WPF 4.5 in C# 4th Edition》
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM