1.什麼是路由事件
已下為msdn中的定義
功能定義:路由事件是一種可以針對元素樹中的多個偵聽器(而不是僅針對引發該事件的物件)呼叫處理程式的事件。
實現定義:路由事件是乙個 clr 事件,可以由 routedevent 類的例項提供支援並由 windows presentation foundation (wpf) 事件系統來處理。典型的 wpf 應用程式中包含許多元素。 無論這些元素是在**中建立的還是在 xaml 中宣告的,它們構成了乙個彼此關聯的元素樹。
2.冒泡事件和隧道事件
根據事件的定義,事件路由可以按兩種方向之一傳播,分別為冒泡事件和隧道事件。
通常在元素樹中從源元素向上「冒泡」,直到它到達元素樹的根(通常是頁面或視窗)。這樣您就可以針對源元素的上方層級物件處理事件。例如,可向嵌入的 grid 元素附加乙個 button.click 處理程式,而不是直接將其附加到按鈕本身。氣泡事件有指示其操作的名稱(例如,mousedown)。
隧道事件採用另一種方式,從根元素開始,向下遍歷元素樹,直到被處理或到達事件的源元素。這樣上游元素就可以在事件到達源元素之前先行擷取並進行處理。根據命名慣例,隧道事件通常都以 preview開頭(例如 previewmousedown)。隧道路由事件總在冒泡路由事件之前被觸發。
3.wpf事件
1)生命週期事件:在元素被初始化、載入或解除安裝時發生這些事件。
initialized:某元素被例項化,這時元素已被初始化,但其他元素可能還未初始化。此外尚未應用樣式和資料繫結時,屬性為true;
loaded:整個視窗已經初始化,並應用了樣式和資料繫結,該事件發生,這是元素被呈現之前的最後一站。isloaded屬性為true;
unloaded:元素被釋放時,該事件發生,原因是包含元素的視窗被關閉或元素從視窗中被刪除。
2)滑鼠事件:滑鼠操作後觸發的事件按,如up,down。
3)鍵盤事件:鍵盤動作的結果。
previewtextinput:隧道,當按鍵完成並且元素正在接收文字輸入時發生;textinput:冒泡;
previewkeyup:隧道,抬起乙個鍵時發生;
鍵盤事件中,一些事件還會掛起另外的一些事件,從而執行更特殊的鍵盤處理。如textbox掛起了textinput事件。
keyboarddevice屬性提供的方法
名稱說明
iskeydown()
事件發生通知是否按下該鍵
iskeyup()
事件發生通知是否抬起該鍵
iskeytoggled()
事件發生時,檢驗是否處於開啟狀態,如caps lock
4)手寫筆事件:使用手寫筆的結果,在平板上用手寫筆代替滑鼠。
5)多點觸控事件:由一根或多跟手指在觸屏裝置上操作的結果,僅在win7中支援這些事件。
以下多點觸控摘自msdn
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...