WPF中的事件(Event)

來源:互聯網
上載者:User

     UIElement定義核心子系統,包括 Layout、Input 和 Event。

     輸入是作為核心模式裝置驅動程式上的訊號發出的,並通過涉及 Windows 核心和 User32 的複雜進程路由到正確的進程和線程。與輸入相對應的 User32 訊息一旦路由到 WPF,它就會轉換為 WPF 原始輸入訊息,並發送到發送器。WPF 允許原始輸入事件轉換為多個實際事件,允許在保證傳遞到位的情況下在較低的系統層級實作類別似“MouseEnter”的功能。

每個輸入事件至少會轉換為兩個事件 – “預覽”事件和實際事件。WPF 中的所有事件都具有通過元素樹路由的概念。如果事件從目標向上遍曆樹直到根,則被稱為“冒泡”,如果從根開始向下遍曆到目標,它們被稱為“隧道”。輸入預覽事件隧道,使樹中的任何元素都有機會篩選事件或對事件採取操作。然後,常規(非預覽)事件將從目標向上冒泡到根。

路由事件(Routed Event)

     可以從功能或實現的角度來考慮路由事件。此處對這兩種定義均進行了說明,因為使用者當中有的認為前者更有用,而有的則認為後者更有用。

     功能定義:路由事件是一種可以針對元素樹中的多個接聽程式(而不是僅針對引發該事件的對象)調用處理常式的事件。

     實現定義:路由事件是一個 CLR 事件,可以由RoutedEvent類的執行個體提供支援並由 Windows Presentation Foundation (WPF) 事件系統來處理。

     典型的 WPF 應用程式中包含許多元素。無論這些元素是在代碼中建立的還是在 XAML 中聲明的,它們都由共同所在的元素樹關聯起來。根據事件的定義,事件路由可以按兩種方向之一傳播,但是通常會在元素樹中從源元素向上“冒泡”,直到它到達元素樹的根(通常是頁面或視窗)。

路由策略

     路由事件使用以下三個路由策略之一:

     冒泡:針對事件來源呼叫事件處理常式。路由事件隨後會路由到後續的父元素,直到到達元素樹的根。大多數路由事件都使用冒泡路由策略。冒泡路由事件通常用來報告來自不同控制項或其他 UI 元素的輸入或狀態變化。

     直接:只有源元素本身才有機會調用處理常式以進行響應。這與 Windows 表單用於事件的“路由”相似。但是,與標準 CLR 事件不同的是,直接路由事件支援類處理(類處理將在下一節中介紹)而且可以由 EventSetter 和 EventTrigger 使用。

     隧道:最初將在元素樹的根處呼叫事件處理常式。隨後,路由事件將朝著路由事件的源節點元素(即引發路由事件的元素)方向,沿路由線路傳播到後續的子項目。在合成控制項的過程中通常會使用或處理隧道路由事件,這樣,就可以有意地禁止顯示複合組件中的事件,或者將其替換為特定於整個控制項的事件。在 WPF 中提供的輸入事件通常是以隧道/冒泡對實現的。隧道事件有時又稱作 Preview 事件,這是由隧道/冒泡對所使用的命名規範決定的。

預覽事件

     預覽事件(也稱為隧道事件)是路由事件,以Preview最為首碼。路由的方向是從應用程式根項目到引發該事件並在事件數目據中報告為源的元素。

將路由事件標記為“已處理”和“類處理”

     路由事件的處理常式可以在事件數目據內將事件標記為已處理。處理事件將有效地縮短路由。類處理是一個編程概念,受路由事件支援。類處理常式有機會在類層級使用處理常式處理特定路由事件,該處理常式在類的任何執行個體上的任何執行個體處理常式之前調用。

事件的處理

     當需要在某個元素停止路由時,需要將該事件的參數標記為已處理。如:e.handled = true;

msdn: http://msdn.microsoft.com/zh-cn/library/ms742806.aspx

http://tech.ddvip.com/2008-09/122232996970810.html

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.