WPF學習 第十五章 WPF事件

2022-05-10 16:47:02 字數 1439 閱讀 9462

前兩章學習了wpf事件的工作原理,現在分析一下在**中可以處理的各類事件。儘管每個元素都提供了許多事件,但最重要的事件通常包括以下5類:

一、生命週期事件

當首次建立以及釋放所有元素時都會引發事件,可使用這些事件初始化視窗。表1-1列出了這些事件,他們是在frameworkelement類中定義的。

表1-1 所有元素的生命週期事件

為了弄清initialized事件和loaded事件之間的關係,分析一下呈現過程是有幫助的。frameworkelement類實現了isupportinitialize介面,該介面提供了兩個用於控制初始化過程的方法。第乙個方法是begininit(),在例項化元素後立即呼叫該方法。呼叫begininit()方法後,xaml解析器設定所有元素的屬性(並新增內容)。第二個方法是endinit(),完成初始化後,將呼叫該方法,此時引發initialized事件。

當建立視窗時,會自下而上地初始化每個元素分支。這意味著,位於深層的巢狀元素在他們的容器之前被初始化。當引發初始化事件時,可確保元素樹中當前元素以下的元素已經全部完成了初始化。但是,包含當前元素的元素可能還沒有初始化,並且不能假定視窗的任何其他部分已經初始化。

在每個元素都完成初始化後,還需要在他們的容器中進行布局、應用樣式。如果需要的話,還會繫結到資料來源。當引發視窗的initialized事件後,就可以進入下一階段了。

一旦完成初始化過程,就會引發loaded事件。loaded事件和initialized事件的發生過程相反——換句話說,包含其他所有元素的視窗首先引發loaded事件,然後才是更深層的巢狀元素。為所有元素都引發了loaded事件後,視窗就變得可見了,並且元素都已被呈現。

視窗還有它自己更特殊的生命週期事件,表1-2列出了這些事件。

表1-2 windows類的生命週期事件

如果只對執行控制項的第一次初始化感興趣,完成這項任務的最好時機是在觸發loaded事件時。通常可在同一位置進行所有初始化,這個位置一般是window.load事件的事件處理程式。

二、輸入事件

輸入事件是當使用者使用某些種類的外設硬體進行互動時發生的事件,例如滑鼠、鍵盤、手寫筆或多點觸控螢幕。輸入事件可通過繼承自inputeventargs的自定義事件引數類傳遞額外的資訊。如下圖所示,顯示了繼承層次。

圖 輸入事件的eventargs類

inputeventargs類只增加了兩個屬性:timestamp和device。timestamp屬性提供了乙個整數,指示事件何時發生的毫秒數(它所代表的實際事件並不重要,但可比較不同的時間戳值以確定哪個事件先發生。事件戳值大的事件是在更近發生的)。device屬性返回乙個物件,該物件提供與觸發事件的裝置相關的更多資訊,裝置可以是滑鼠、鍵盤或手寫筆。這三種可能的裝置由不同的類表示,所有這些類都繼承自抽象類system.windows.input.inputdevice.

接下來章節將進一步分析在wpf應用程式中如何處理滑鼠、鍵盤以及多點觸控動作。

第十五章預習

public class yuxi15 else 字串的比較 字串1.equals 字串2 比較兩個字串的值是否相同,返回boolean型別的值.如果相同,則返回真值,否則返回假值.字串1.equalsignorecase 字串2 忽略大小寫比較字串1和字串2.如果都相同則返回真值 否則返回假值 改...

UNP 學習筆記 第十五章

1.描述符傳遞 接收傳送者的憑證用到的時候再看 2.struct sockaddr un 3.socketpair 4.書上有三四個例子,跟著學習一下如何建立乙個unix域套接字1.基礎 2.socketpair 1.unix域套接字往往比通訊兩端位於同乙個主機的tcp套接字快出一倍。2.unix域...

learn with python 第十五章 繼承

第十六章 繼承 16.1繼承 物件導向語言所擁有的特性是繼承,繼承指定義乙個新的類擁有原來類的方法。繼承最大的好處就是可以在不改變現存 的情況下新增新的方法,稱之為繼承是因為新定義的類擁有父類的所有方法。新建立的類知之為子類。繼承是乙個功能強大的特性,某些情況下如果沒有繼承,一些層序幾乎無法實現。同...