WPF 二 路由事件1 冒泡路由事件

2022-04-08 15:41:26 字數 2605 閱讀 1317

wpf中的路由事件是具有更強傳播能力的事件,它們可以在元素樹中向上冒泡和向下隧道傳播,並且沿著傳播路徑被事件處理程式處理。

下面的例子演示了事件冒泡的過程。

<

window

x:class

="prj05_1.mainwindow"

xmlns

=""xmlns:x

=""title

="bubbledlabelclick"

height

="359"

width

="329"

>

<

grid

margin

="3"

mouseup

="somethingclicked"

>

<

grid.rowdefinitions

>

<

rowdefinition

height

="auto"

>

rowdefinition

>

<

rowdefinition

height

="*"

>

rowdefinition

>

<

rowdefinition

height

="auto"

>

rowdefinition

>

<

rowdefinition

height

="auto"

>

rowdefinition

>

grid.rowdefinitions

>

<

label

margin

="5"

grid.row

="0"

horizontalalignment

="left"

background

="aliceblue"

borderbrush

="black"

borderthickness

="1"

mouseup

="somethingclicked"

>

<

stackpanel

mouseup

="somethingclicked"

>

<

textblock

margin

="3"

mouseup

="somethingclicked"

>image and text label

textblock

>

<

image

source

="lianjie.png"

stretch

="none"

mouseup

="somethingclicked"

/>

<

textblock

margin

="3"

mouseup

="somethingclicked"

>courtesy of the stackpanel

textblock

>

stackpanel

>

label

>

<

listbox

grid.row

="1"

margin

="5"

name

="lstmessage"

>

listbox

>

<

checkbox

grid.row

="2"

margin

="5"

name

="chkhandle"

>handle first event

checkbox

>

<

button

grid.row

="3"

margin

="5"

padding

="3"

horizontalalignment

="right"

name

="cmdcenter"

click

="cmdclear_click"

>clear list

button

>

grid

>

window

>

事件**:

private

void somethingclicked(object sender, mousebuttoneventargs e)

private

void cmdclear_click(object sender, routedeventargs e)

程式執行後的效果:

當點選image時可以看到事件的響應過程是從最底層開始的。

WPF 二 路由事件3 附加事件

假設在stackpanel面板中包含了一堆按鈕,並且希望在乙個事件處理程式中處理所有這些按鈕的事件,一種辦法是每個按鈕的click事件關聯到同乙個事件處理程式。還有一種更簡單的辦法,可以通過處理更高元素的click事件來處理所有按鈕的單擊事件。stackpanel button.click doso...

WPF路由事件

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

WPF 路由事件

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