深入探討WPF Attached
我們?cè)谝郧暗奈恼轮性?jīng)介紹了一些有關(guān)WPF事件的相關(guān)知識(shí),相信大家已經(jīng)對(duì)這一知識(shí)有一些掌握,在這里我們將會(huì)繼續(xù)針對(duì)WPF Attached做一個(gè)簡(jiǎn)單的介紹。#t#
WPF Attached與Attached屬性類似,WPF的Element在事件沒(méi)有定義的情況下也支持Tunneling或者Bubbling事件。比如,我們可以在一個(gè)簡(jiǎn)單的窗口程序中這樣指定事件函數(shù):
- < Window
- xmlns=”http://schemas
.microsoft.com/winfx/2006/xaml/
presentation” - xmlns:x=”http://schemas.microsoft
.com/winfx/2006/xaml” - x:Class=”Window1”
- Button.Click=”Button_Click”
- < Button Text="TestButton"
- Width="50" Height="30">
- < /Window>
WPF Attached例子中,因?yàn)閃indow本身沒(méi)有定義Click事件,所以我們必須指定Click事件屬性的名稱前綴,也就是定義事件的類名。經(jīng)過(guò)這樣的定義后,點(diǎn)擊在Window中的TestButton,也會(huì)激發(fā)屬性聲明的Click事件,調(diào)用對(duì)應(yīng)的Button_Click方法。
為什么這樣的定義可以通過(guò)呢?首先編譯時(shí),XAML會(huì)看到Button類確實(shí)定義了一個(gè)Click的.NET事件。在運(yùn)行時(shí),會(huì)直接調(diào)用AddHandler把這兩個(gè)事件依附到Window對(duì)應(yīng)的類當(dāng)中。所以上面用XAML屬性聲明的事件代碼與下面的程序代碼等效:
- public Window1 {
- InitializeComponent();
- this.AddHandler(Button.
ClickEvent, new Routed
EventHandler(Button_Click)); - }
以上就是對(duì)WPF Attached的相關(guān)介紹。