日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

WPF的事件路由系統(tǒng)傳播機(jī)制(隧道傳播、直接傳播和冒泡傳播)

來源: 責(zé)編: 時(shí)間:2024-04-03 09:09:38 217觀看
導(dǎo)讀WPF的事件路由系統(tǒng)包括三種類型的事件傳播機(jī)制:隧道傳播、直接傳播和冒泡傳播。每種傳播機(jī)制都有不同的傳播路徑和使用場景。1. 隧道傳播(Tunneling)隧道傳播是事件從根元素向下傳遞的機(jī)制。事件會(huì)依次經(jīng)過可視化樹中的

os628資訊網(wǎng)——每日最新資訊28at.com

WPF的事件路由系統(tǒng)包括三種類型的事件傳播機(jī)制:隧道傳播、直接傳播和冒泡傳播。每種傳播機(jī)制都有不同的傳播路徑和使用場景。os628資訊網(wǎng)——每日最新資訊28at.com

1. 隧道傳播(Tunneling)

隧道傳播是事件從根元素向下傳遞的機(jī)制。事件會(huì)依次經(jīng)過可視化樹中的每個(gè)元素,直到達(dá)到事件的原始源。在隧道傳播中,事件處理程序會(huì)首先被調(diào)用,然后再向下傳遞。os628資訊網(wǎng)——每日最新資訊28at.com

示例代碼:os628資訊網(wǎng)——每日最新資訊28at.com

<Grid PreviewMouseDown="Grid_PreviewMouseDown">    <Button PreviewMouseDown="Button_PreviewMouseDown" /></Grid>
private void Grid_PreviewMouseDown(object sender, MouseButtonEventArgs e){    Console.WriteLine("Grid PreviewMouseDown");    e.Handled = true; // 停止事件傳播}private void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e){    Console.WriteLine("Button PreviewMouseDown");}

使用場景:os628資訊網(wǎng)——每日最新資訊28at.com

  • 可以在父級(jí)元素上捕獲事件并進(jìn)行處理,然后決定是否繼續(xù)傳播給子級(jí)元素。
  • 可以在事件的早期階段對(duì)事件進(jìn)行攔截或干預(yù)。
  • 可以在父級(jí)元素上實(shí)現(xiàn)一些全局的事件處理邏輯。

2. 直接傳播(Direct)

直接傳播是事件沿著可視化樹的路徑上的每個(gè)元素進(jìn)行傳播的機(jī)制。它對(duì)事件的處理順序沒有要求,只是按照元素在視覺樹中的順序觸發(fā)。os628資訊網(wǎng)——每日最新資訊28at.com

示例代碼:os628資訊網(wǎng)——每日最新資訊28at.com

<Grid PreviewMouseDown="Grid_PreviewMouseDown">    <Button PreviewMouseDown="Button_PreviewMouseDown" /></Grid>
private void Grid_PreviewMouseDown(object sender, MouseButtonEventArgs e){    Console.WriteLine("Grid PreviewMouseDown");}private void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e){    Console.WriteLine("Button PreviewMouseDown");}

使用場景:os628資訊網(wǎng)——每日最新資訊28at.com

  • 可以在父級(jí)元素和子級(jí)元素上都處理事件,并且不影響傳播的順序。
  • 可以在不同元素上進(jìn)行不同的事件處理邏輯。

3. 冒泡傳播(Bubbling)

冒泡傳播是事件從事件源開始向上傳遞的機(jī)制,沿著可視化樹向上冒泡直到達(dá)到根元素。在冒泡傳播中,事件處理程序會(huì)首先被子級(jí)元素調(diào)用,然后再依次向上傳遞。os628資訊網(wǎng)——每日最新資訊28at.com

示例代碼:os628資訊網(wǎng)——每日最新資訊28at.com

<Grid MouseDown="Grid_MouseDown">    <Button MouseDown="Button_MouseDown" /></Grid>
private void Grid_MouseDown(object sender, MouseButtonEventArgs e){    Console.WriteLine("Grid MouseDown");}private void Button_MouseDown(object sender, MouseButtonEventArgs e){    Console.WriteLine("Button MouseDown");    e.Handled = true; // 停止事件傳播}

使用場景:os628資訊網(wǎng)——每日最新資訊28at.com

  • 可以在父級(jí)元素上捕獲子級(jí)元素的事件并進(jìn)行處理。
  • 可以在父級(jí)元素上實(shí)現(xiàn)一些全局的事件處理邏輯。

鼠標(biāo)單擊事件序列說明:

  • PreviewMouseLeftButtonDown for Window (Tunnel):窗口接收到鼠標(biāo)左鍵按下的預(yù)覽事件。
  • PreviewMouseDown for Window (Tunnel):窗口接收到鼠標(biāo)按下的預(yù)覽事件。
  • PreviewMouseLeftButtonDown for StackPanel (Tunnel):StackPanel(堆棧面板)接收到鼠標(biāo)左鍵按下的預(yù)覽事件。
  • PreviewMouseDown for StackPanel (Tunnel):StackPanel接收到鼠標(biāo)按下的預(yù)覽事件。
  • PreviewMouseLeftButtonDown for Label (Tunnel):Label(標(biāo)簽)接收到鼠標(biāo)左鍵按下的預(yù)覽事件。
  • PreviewMouseDown for Label (Tunnel):Label接收到鼠標(biāo)按下的預(yù)覽事件。
  • MouseLeftButtonDown for Label (Bubble):Label接收到鼠標(biāo)左鍵按下的冒泡事件。
  • MouseDown for Label (Bubble):Label接收到鼠標(biāo)按下的冒泡事件。
  • MouseLeftButtonDown for StackPanel (Bubble):StackPanel接收到鼠標(biāo)左鍵按下的冒泡事件。
  • MouseDown for StackPanel (Bubble):StackPanel接收到鼠標(biāo)按下的冒泡事件。
  • MouseLeftButtonDown for Window (Bubble):窗口接收到鼠標(biāo)左鍵按下的冒泡事件。
  • MouseDown for Window (Bubble):窗口接收到鼠標(biāo)按下的冒泡事件。
  • PreviewMouseLeftButtonUp for Window (Tunnel):窗口接收到鼠標(biāo)左鍵釋放的預(yù)覽事件。
  • PreviewMouseUp for Window (Tunnel):窗口接收到鼠標(biāo)釋放的預(yù)覽事件。
  • PreviewMouseLeftButtonUp for StackPanel (Tunnel):StackPanel接收到鼠標(biāo)左鍵釋放的預(yù)覽事件。
  • PreviewMouseUp for StackPanel (Tunnel):StackPanel接收到鼠標(biāo)釋放的預(yù)覽事件。
  • PreviewMouseLeftButtonUp for Label (Tunnel):Label接收到鼠標(biāo)左鍵釋放的預(yù)覽事件。
  • PreviewMouseUp for Label (Tunnel):Label接收到鼠標(biāo)釋放的預(yù)覽事件。
  • MouseLeftButtonUp for Label (Bubble):Label接收到鼠標(biāo)左鍵釋放的冒泡事件。
  • MouseUp for Label (Bubble):Label接收到鼠標(biāo)釋放的冒泡事件。
  • MouseLeftButtonUp for StackPanel (Bubble):StackPanel接收到鼠標(biāo)左鍵釋放的冒泡事件。
  • MouseUp for StackPanel (Bubble):StackPanel接收到鼠標(biāo)釋放的冒泡事件。
  • MouseLeftButtonUp for Window (Bubble):窗口接收到鼠標(biāo)左鍵釋放的冒泡事件。
  • MouseUp for Window (Bubble):窗口接收到鼠標(biāo)釋放的冒泡事件。

通過這個(gè)事件序列,可以看到鼠標(biāo)單擊事件從窗口頂層元素開始,在隧道傳播階段(Tunnel)逐級(jí)向下,然后在直接傳播階段(Direct)從最深的子元素開始逐級(jí)向上,最后在冒泡傳播階段(Bubble)再次逐級(jí)向上傳播。這個(gè)事件序列反映了鼠標(biāo)單擊事件的路由過程。os628資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-81058-0.htmlWPF的事件路由系統(tǒng)傳播機(jī)制(隧道傳播、直接傳播和冒泡傳播)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: React 19 要來了!究竟帶來了哪些實(shí)用的特性呢?

下一篇: Python Flask應(yīng)用程序如何組織和管理多個(gè)服務(wù)模塊

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 6月安卓手機(jī)性價(jià)比榜:Note 12 Turbo斷層式碾壓

    6月份有一個(gè)618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進(jìn)了,反正促銷沒壞處,廠商和用戶都能滿意。618期間一些產(chǎn)品也出現(xiàn)了歷史低價(jià),那么各個(gè)價(jià)位段的產(chǎn)品性價(jià)比
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學(xué)習(xí)反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對(duì)代碼進(jìn)行反混淆,尤其是使用自定義混淆器對(duì)其進(jìn)行混淆時(shí)。什么是混
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個(gè)人開發(fā)仿造稿定設(shè)計(jì)的圖片編輯器到現(xiàn)在,不知不覺已過去一年時(shí)間了,期間我經(jīng)歷了裁員失業(yè)、面試找工作碰壁,寒冬下一直沒有很好地履行計(jì)劃.....這些就放在日
  • 19個(gè) JavaScript 單行代碼技巧,讓你看起來像個(gè)專業(yè)人士

    今天這篇文章跟大家分享18個(gè)JS單行代碼,你只需花幾分鐘時(shí)間,即可幫助您了解一些您可能不知道的 JS 知識(shí),如果您已經(jīng)知道了,就當(dāng)作復(fù)習(xí)一下,古人云,溫故而知新嘛。現(xiàn)在,我們就開始今
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會(huì)涉及各種各樣的安全任務(wù),包括但不限于:開發(fā)某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級(jí)不香了。俗話說,兵無常勢,水無常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級(jí)體系并不稀奇。7月13日,淘寶天貓集團(tuán)啟動(dòng)了近年來最大的人力制度改革,目前已形成一
  • 余承東:AI大模型技術(shù)的發(fā)展將會(huì)帶來下一代智能終端操作系統(tǒng)的智慧體驗(yàn)

    8月4日消息,2023年華為開發(fā)者大會(huì)(HDC.Together)今天正式開幕,華為發(fā)布HarmonyOS 4、全新升級(jí)的鴻蒙開發(fā)套件、HarmonyOS Next開發(fā)者預(yù)覽版本等一系列
  • AI芯片初創(chuàng)公司Tenstorrent獲三星和現(xiàn)代1億美元投資

    Tenstorrent是一家由芯片行業(yè)資深人士Jim Keller領(lǐng)導(dǎo)的加拿大初創(chuàng)公司,專注于開發(fā)人工智能芯片,該公司周三表示,已經(jīng)從現(xiàn)代汽車集團(tuán)和三星投資基金等
  • 三星Galaxy Z Fold5官方渲染圖曝光:13.4mm折疊厚度依舊感人

    據(jù)官方此前宣布,三星將于7月26日在韓國首爾舉辦Unpacked活動(dòng),屆時(shí)將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
Top 主站蜘蛛池模板: 历史| 北川| 松原市| 韶关市| 绥滨县| 宁国市| 进贤县| 固安县| 安乡县| 富裕县| 望谟县| 通河县| 福海县| 登封市| 延川县| 新竹县| 上饶市| 岑巩县| 和龙市| 新建县| 岳阳市| 黄石市| 蚌埠市| 龙岩市| 扶余县| 侯马市| 永宁县| 称多县| 揭阳市| 宁国市| 台中县| 罗江县| 临清市| 磐安县| 天水市| 嵊泗县| 萨迦县| 金华市| 马龙县| 呼和浩特市| 普安县|