成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

幾種WPF事件策略詳細介紹

開發 開發工具
WPF事件策略供分為三種,分別是:Tunneling;Bubbling;Direct。其中Tunneling事件首先在根元素激發。Bubbling事件首先在源元素激發。Direct事件只在源元素激發。

在實用WPF時,一般情況下都會碰到有關WPF事件的相關應用。那么首先我們需要了解的就是一些獲得支持的WPF事件策略。其中主要包括三種WPF事件策略:#t#

Tunneling:事件首先在根元素激發,然后到達樹下的每個元素直到源元素(或者有處理函數處理這個事件終止了傳遞)。

Bubbling:事件首先在源元素激發,然后向上直到根元素(或者有處理函數處理這個事件終止了傳遞。

Direct:事件只在源元素激發。這與普通的.NET事件一樣,除了參與事件觸發器。

在上面的WPF事件策略例子中,我們注冊的事件策略就是Bubbling。

傳遞事件的處理函數的參數與普通.NET事件一樣。第一個參數System.Object表示處理函數依附的元素。第二個的System.EventArgs派生類,提供了如下四個有用的屬性:

Source:邏輯樹中激發事件的原始元素。

OriginalSource:視覺樹中激發事件的原始元素。

Handled:布爾值,表示事件是否被處理。

RoutedEvent:實際的傳遞事件對象(比如Button.ClickEvent)。這個對于相同的處理函數處理多個傳遞事件時非常有用,可以用來區別傳遞事件。

Source和OriginalSource代表了邏輯樹和視覺樹對象。這有利于我們進行一些低級控制,但是對于有的事件,不需要區別它們,這兩個的值是相同的。

 

現在,我們看看WPF到底是如何處理Bubbling和Tunneling事件的。最后介紹了Attached事件。

在UIElement類,預定義了很多的傳遞事件,比如鍵盤、鼠標等等。其中大多數是Bubbling事件,其中很多的事件都還有一個對應的Tunneling事件。所有的Tunneling事件都是Preview前綴命名,它們都在對應的Bubbling事件之前激發。比如PreviewMouseMove這個Tunneling事件是在MouseMove這個Bubbling事件之前激發的。

Tunneling事件的好處就是可以有機會改變或者取消后面的Bubbling事件。WPF內建的響應事件只會對Bubbling事件進行響應,當然,前提了Bubbling和Tunneling同時定義。這種行為有什么好處呢?

看下面的一個WPF事件策略例子:比如,我們想實現一種特殊的編輯框,只允許輸入一些特定的字符。以前的實現方法在處理編輯框的KeyDown或者編輯框的WM_CHAR事件,然后判斷新輸入的字符是否滿足條件,如果不滿足,我們再把編輯框的值設置為原來的值。這種實現技術會有字符的一個回退過程。而在WPF中,實現方法不同,直接在PrevewKeyDown等Tunneling事件中處理,如果是不需要的字符,把事件設置為已經處理過。

這樣這個事件就不會進入到后面的Bubbling事件KeyDown中,WPF也根本不會顯式這個字符。這種方法的效果將比之前的回退處理好很多。

雖然我們可以通過RoutedEventArgs參數的Handled屬性為True來終止事件的傳遞。但是,有時候我們需要某個事件始終被接受處理,這可以通過程序代碼實現。使用重載的AddHanlder方法。比如,我們給窗口添加一個鼠標右鍵的處理方法(其中MRBD_Handler是類的一個事件方法):
 

  1. public AboutDialog() {   
  2. InitializeComponent();   
  3. this.AddHandler(Window.
    MouseRightButtonDownEvent, 
    new MouseButtonEventHandler
    (MRBD_Handler), true);   

這樣,任何條件下,MRBD_Handler都可以接收到窗口的鼠標右鍵事件。即使鼠標右鍵是點擊在窗口中的某個子控件之上。

以上就是對WPF事件策略的一些相關介紹。

責任編輯:曹凱 來源: IT168
相關推薦

2009-12-24 10:09:33

WPF事件注冊

2009-12-24 16:11:07

WPF圖像處理

2011-07-03 18:44:45

網站優化

2022-07-27 08:32:01

數據庫MySQL

2009-12-24 17:38:18

WPF事件觸發器

2023-11-02 08:10:13

框架Spring程序事件

2009-12-25 11:04:51

WPF Border

2009-12-24 14:18:57

WPF類型轉換

2009-12-23 18:06:25

WPF模板

2011-03-15 09:14:29

2011-07-14 13:50:09

ThreadLocal

2009-12-25 10:05:06

WPF資源

2009-12-29 13:29:28

WPF Depende

2009-12-25 17:48:43

WPF資源路徑

2009-12-23 14:11:05

WPF名字空間

2009-12-28 11:14:29

WPF顯示文本

2009-12-24 15:04:12

WPF代碼解析異常

2009-12-29 10:32:24

WPF Listbox

2009-12-28 13:23:19

WPF導出圖片

2009-12-25 09:34:50

WPF顯示HTML
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩国产一区二区 | 天天综合久久 | 日韩一区二区三区视频在线观看 | 亚洲精品一 | 精品国产欧美一区二区三区成人 | 国产视频2021 | 久久国产一区二区三区 | 欧美激情欧美激情在线五月 | 日韩欧美不卡 | 亚洲精品大片 | 亚洲精品久久久久久久久久久久久 | 国产精品久久久久久一区二区三区 | 国产精品精品视频一区二区三区 | 中文精品视频 | 夜夜精品浪潮av一区二区三区 | 久久尤物免费一区二区三区 | 欧美视频一区二区三区 | 四虎影院免费在线播放 | 久久久青草婷婷精品综合日韩 | 国产成人精品一区二区三区四区 | 久久国产一区 | 国产重口老太伦 | 三极网站 | 国产精品久久久久久久久久久免费看 | 黄色免费在线观看 | 国产九九九 | 欧美一区二区三区在线观看 | 欧产日产国产精品99 | 精品视频一区二区三区在线观看 | 91精品久久久久久久久 | 国产一区二区免费在线 | 久久久不卡网国产精品一区 | 国产精品国产精品国产专区不片 | 精品国产一区二区三区久久 | 一区二区在线 | 男人天堂手机在线视频 | 精品福利一区二区三区 | 黄在线 | 国产视频福利一区 | 国产a区| 国产99久久|