學習WPF 了解路由事件

2022-02-04 12:40:44 字數 1461 閱讀 7878

入門

我們先來看乙個例子

前台**:

後台**:

點選按鈕的執行效果

第乙個彈出視窗

第二個彈出視窗:

第三個彈出視窗:

說明

當點選按鈕之後,先觸發按鈕的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》

學習WPF路由事件

建議大家使用工具 snoop,可以到blois.us snoop 先來了解下什麼是wpf裡的路由事件 我們建立乙個wpf應用程式,如下 using system.windows using system.windows.input namespace wpfceshi private void wi...

WPF路由事件學習筆記

路由事件是具有更強傳播能力的事件 他們可在元素樹中向上冒泡和向下隧道傳播,並且沿著傳播路勁被事件處理程式處理。路由事件和依賴項屬性模型類似。wpf的 button 類提供了大家屬性的 click 事件,改時間繼承自抽象的 buttonbase基類 public abstract class butt...

WPF學習之路 路由事件

前景簡介 博主本人從事sdk開發,主要語言c 由於客戶需求,需要給予自己的sdk,開發一套應用,採用wpf,本人wpf小白。所以從頭開始學習wpf,主要看過了 深入遷出wpf 就開始了程式的開發,由於對於mvvm理解不深,程式框架寫的非常亂,雖然應用已經發布,但是後續擴充套件難度較大 最近研究多螢幕...