WPF路由事件學習筆記

2021-06-21 07:22:36 字數 1712 閱讀 5569

路由事件是具有更強傳播能力的事件---

他們可在元素樹中向上冒泡和向下隧道傳播,並且沿著傳播路勁被事件處理程式處理。

路由事件和依賴項屬性模型類似。

wpf的

button

類提供了大家屬性的

click

事件,改時間繼承自抽象的

buttonbase基類

public abstract class buttonbase:contentcontrol......

public static readonly routedecent clickevent;

static buttonbase()

butotnbase.clickevent=eventmanager.registerroutedevent(

「click」,routingstrategy.bubble,typeof(routedeventhandler),eypeof(buttonbase));

public event routedeventhandler click

addbase.addhandler(buttonbase.clickevent,value);

remove

base.removehandler(buttonbase.clickevent,value);

註冊事件時需要指定事件的名稱,路由型別,定義事件處理程式語法的委託以及事件的擁有著

共享路由事件:與依賴項屬性一樣,可在類之間共享路由事件的定義。例如,uielement

使用mouseup

事件,mouseup

時間是在

windows.inout.mouse

類定義的,

uielement

類只通過

routedevented.addower

方法重用

mouseup事件

uielement.mouseupevent=mouse.mouseupevente.addower(typeof(uielement));

冒泡路由事件:從元素開始向該元素的父元素傳遞,直至頂層元素。

隧道路由事件:從頂層容器開始到具體元素,

wpf事件有下面幾大類

v 生命週期事件:元素被初始化,載入或解除安裝時發生。

v 滑鼠事件:滑鼠動作的結果。

v 鍵盤事件:鍵盤動作的結果。

v 手寫筆事件:類似鋼筆,平板電腦上手寫筆代替滑鼠。

v 多點觸控事件:觸控螢幕的一些動作。

生命週期事件:

initialized  當元素被例項化,並以根據

xaml

標記設定了元素的屬性後發生,這是元素已經初始化,但視窗的其他部分可能尚未初始化。此外,尚未應用樣式和資料繫結。

loaded 當整個視窗已經初始化並應用了樣式和資料繫結,該事件發生,這是元素被呈現之前最後一站。

unloaded 當元素被釋放時發生,原因是包含元素的視窗被關閉或特定的元素被從視窗中刪除。

當建立視窗時,會自下而上的初始化每乙個分支元素,這意味著,位於深層的巢狀元素在他的容器之前被例項化。當引發初始化事件時,可確保元素樹中當前元素一下的元素已經全部完成例項化,但是包含當前元素的元素可能還沒有初始化,每個元素初始化後,還需要在他們的容器中進行布局,應用樣式。如果需要的話,還會繫結到資料來源。一旦完成初始化,就會進入loaded

事件,loaded

事件的發生過程和

initialized

事件的發生過程相反。

學習WPF路由事件

建議大家使用工具 snoop,可以到blois.us snoop 先來了解下什麼是wpf裡的路由事件 我們建立乙個wpf應用程式,如下 using system.windows using system.windows.input namespace wpfceshi private void wi...

學習WPF 了解路由事件

入門 我們先來看乙個例子 前台 後台 點選按鈕的執行效果 第乙個彈出視窗 第二個彈出視窗 第三個彈出視窗 說明 當點選按鈕之後,先觸發按鈕的click事件,再上查詢,發現stackpanel也註冊了該事件,那麼接著觸發stackpanel的button.click事件,依次再觸發grid的butto...

WPF學習之路 路由事件

前景簡介 博主本人從事sdk開發,主要語言c 由於客戶需求,需要給予自己的sdk,開發一套應用,採用wpf,本人wpf小白。所以從頭開始學習wpf,主要看過了 深入遷出wpf 就開始了程式的開發,由於對於mvvm理解不深,程式框架寫的非常亂,雖然應用已經發布,但是後續擴充套件難度較大 最近研究多螢幕...