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
>
privatevoid 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的時候,不管是冒泡還是隧道事件,它還是會繼續傳播的,只是...