日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
WPF傳遞事件重要性體現(xiàn)

WPF傳遞事件在實(shí)際應(yīng)用中起到了非常重要的作用。希望大家可以通過這篇文章介紹的內(nèi)容,充分掌握這一方法的應(yīng)用,提高自己的開發(fā)效率。#t#

WPF在.NET簡(jiǎn)單事件通知之上添加了很多基礎(chǔ)結(jié)構(gòu)。傳遞事件的設(shè)計(jì)使得事件可以與元素樹一起很好的工作。事件發(fā)生后,可以在視覺樹和邏輯樹自動(dòng)地進(jìn)行上下傳遞,我們不需要添加任何額外的代碼。

WPF傳遞事件使得我們不需要過多關(guān)注于視覺樹,這樣封裝對(duì)于我們理解WPF的元素合成非常重要。比如,我們點(diǎn)擊一個(gè)按鈕的事件,在點(diǎn)擊的時(shí)候我們實(shí)際上點(diǎn)擊的是一個(gè)ButtonChrome或者TextBlock,也就是說我們點(diǎn)擊的是Button的內(nèi)容元素。正是因?yàn)槭录梢匝匾曈X樹傳遞,Button才發(fā)現(xiàn)這個(gè)事件,并且可以處理。

因此,我們可以給Button的Content當(dāng)中添加任意的元素,而不會(huì)對(duì)事件有任何的影響。如果沒有這樣的事件傳遞,我們點(diǎn)擊Button內(nèi)的元素時(shí),必須手動(dòng)編寫代碼觸發(fā)Button點(diǎn)擊事件。

WPF傳遞事件的的實(shí)現(xiàn)和行為與Dependency屬性類似。同樣,我們看看如何實(shí)現(xiàn)簡(jiǎn)單的傳遞事件。多數(shù)時(shí)候,傳遞事件并不比普通的.NET事件難。與Dependency屬性一樣,.NET語(yǔ)言(除了XAML)本身并不明白傳遞目標(biāo)。這些支持都是基于WPF API。

 
 
 
  1. public class Button {   
  2. // 傳遞的事件 public static readonly
     RoutedEvent ClickEvent;   
  3. static Button() {   
  4. // 注冊(cè)事件 Button.DoubleClickEvent =
    EventManager.RegisterRoutedEvent
    (“Click”, RoutingStrategy.Bubble, 
    typeof(RoutedEventHandler), typeof(Button)); …   
  5. }   
  6. // .NET事件保證 (可選的)   
  7. public event RoutedEventHandler Click {   
  8. add { AddHandler(Button.ClickEvent, value);   
  9. }   
  10. remove {   
  11. RemoveHandler(Button.ClickEvent, value);   
  12. }   
  13. }   
  14. protected override void OnMouse
    LeftButtonDown(MouseButtonEventArgs e) {   
  15. … // 激發(fā)事件   
  16. RaiseEvent(new RoutedEventArgs
    (Button.ClickEvent, this)); …   
  17. } …   
  18. }  

從上面的實(shí)現(xiàn)可以看出,事件與Dependency屬性有很多相似之處。也是定義一個(gè)靜態(tài)的RoutedEvent成員,同樣在靜態(tài)構(gòu)造函數(shù)里注冊(cè)事件。為了方便,也包裝了一個(gè)普通的.NET事件。

這里的AddHandler/RemoveHandler不是從DependencyObject派生,而是更高一級(jí)的基類System.Windows.UIElement。這兩個(gè)方法為相應(yīng)的事件添加/刪除一個(gè)委派。在OnMouseLeftButtonDown中,我們構(gòu)造一個(gè)事件參數(shù),傳入事件源對(duì)象this,然后調(diào)用RaiseEvent函數(shù)。

以上就是對(duì)WPF傳遞事件的相關(guān)概念解析。


分享文章:WPF傳遞事件重要性體現(xiàn)
網(wǎng)站URL:http://www.5511xx.com/article/dpjpois.html