WPF基礎04之冒泡事件和隧道事件

2021-10-06 07:54:29 字數 1960 閱讀 4929

什麼是路由事件;

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

<

grid buttonbase.click=

"grid_click"

>

<

stackpanel buttonbase.click=

"stackpanel_click"

>

<

button click=

"button_click" content=

"路由事件測試" height=

"50"

>

<

/button>

<

/stackpanel>

<

/grid>

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

中斷事件路由:

1)想要終止事件的向上傳遞,可以用這種方法,這樣事件只傳遞到stackpanel不往上繼續傳遞了

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

冒泡事件和冒泡事件的區別

冒泡事件:

是wpf路由事件中最為常見,它表示事件從源元素擴散(傳播)到可視樹,直到它被處理或到達根元素。這樣您就可以針對源元素的上方層級物件處理事件。

隧道事件:

採用另一種方式,從根元素開始,向下遍歷元素樹,直到被處理或到達事件的源元素。這樣上游元素就可以在事件到達源元素之前先行擷取並進行處理。根據命名慣例,隧道事件帶有字首 preview(例如 previewmousedown)。

將上面**的click改為previewmouseleftbuttondownevent

可以看到隧道事件與冒泡事件路由順序正好相反

...

->grid-

>stackpanel-

>button

WPF 之 WPF應用程式事件

x class xmlns xmlns x startupuri wpfwindowdeal.xaml startup namespace myfirstwpf mainwindow為窗體檔案 常用的窗體事件 1 show 顯示非模態視窗 2 showdialog 顯示模態視窗 3 close 關閉...

WPF 之 滑鼠雙擊事件

由於wpf中沒有滑鼠的雙擊事件,因而只能通過mousedown事件來模擬。當連續的兩次mousedown事件的時間間隔,沒有超過乙個設定的時間閾值時,就計算為乙個雙擊事件,並作相應的處理。利用wpf中system.windows.threading.dispatchertimer來做定時處理,不建議...

WPF 之 滑鼠雙擊事件

由於wpf中沒有滑鼠的雙擊事件,因而只能通過mousedown事件來模擬。當連續的兩次mousedown事件的時間間隔,沒有超過乙個設定的時間閾值時,就計算為乙個雙擊事件,並作相應的處理。利用wpf中system.windows.threading.dispatchertimer來做定時處理,不建議...