WPF的路由事件

2021-10-09 13:36:10 字數 994 閱讀 5646

wpf中的事件為路由事件,所謂路由事件,msdn定義如下:

功能定義:路由事件是一種可以針對元素樹中的多個偵聽器(而不是僅針對引發該事件的物件)呼叫處理程式的事件。

實現定義:路由事件是乙個 clr 事件,可以由 routedevent 類的例項提供支援並由 windows presentation foundation (wpf) 事件系統來處理。

但這兩類定義都比較抽象,我們來看更具體的定義:

yes在這個例子中,事件的事件路由為:

textblock -->stackpanel–>border —>…

中斷事件路由:所有的路由事件都共享乙個公共的事件資料基類 routedeventargs。 routedeventargs 定義了乙個採用布林值的 handled 屬性。 handled 屬性的目的在於,允許路由中的任何事件處理程式通過將 handled 的值設定為 true 來將路由事件標記為「已處理」。

private void stackpanel_mouseup(object sender, mousebuttoneventargs e)

private void yestb_mouseup(object sender, mousebuttoneventargs e)

在上面的例子中,將不再觸發stackpanel_mouseup事件。

自定義路由事件:

如下面的示例所示,首先使用 registerroutedevent 方法註冊乙個 routedevent。按照約定,routedevent 靜態欄位名稱應當以後綴 event 結束。在本示例中,事件的名稱是 tap,事件的路由策略是 bubble。在註冊呼叫之後,可以為該事件提供新增和移除公共語言執行時 (clr) 事件訪問器。

public class mybutton******: button

remove

}void raisetapevent()

protected override void onclick()

WPF路由事件

c 高階程式設計第八版閱讀筆記 sender 事件的傳送者 其呼叫的事件處理器 source事件源 激發 raise 的事件 不使用路由事件的話 sender跟source是同一物件 originalsource 也是事件源 與source不同的地方在於他是原始事件源,真正的激發事件的源頭 事件的s...

WPF 路由事件

路由事件有三種方式。direct event 直接路由事件。自身元素,不傳遞。bubbling event 冒泡路由事件。從子元素到父元素傳遞。tunneling event 隧道路由事件。從父元素到子元素傳遞。1.設定handled true的時候,不管是冒泡還是隧道事件,它還是會繼續傳播的,只是...

WPF路由事件

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