深入探討WPF Attached
我們在以前的文章中曾經介紹了一些有關WPF事件的相關知識,相信大家已經對這一知識有一些掌握,在這里我們將會繼續針對WPF Attached做一個簡單的介紹。#t#
WPF Attached與Attached屬性類似,WPF的Element在事件沒有定義的情況下也支持Tunneling或者Bubbling事件。比如,我們可以在一個簡單的窗口程序中這樣指定事件函數:
- < 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例子中,因為Window本身沒有定義Click事件,所以我們必須指定Click事件屬性的名稱前綴,也就是定義事件的類名。經過這樣的定義后,點擊在Window中的TestButton,也會激發屬性聲明的Click事件,調用對應的Button_Click方法。
為什么這樣的定義可以通過呢?首先編譯時,XAML會看到Button類確實定義了一個Click的.NET事件。在運行時,會直接調用AddHandler把這兩個事件依附到Window對應的類當中。所以上面用XAML屬性聲明的事件代碼與下面的程序代碼等效:
- public Window1 {
- InitializeComponent();
- this.AddHandler(Button.
ClickEvent, new Routed
EventHandler(Button_Click)); - }
以上就是對WPF Attached的相關介紹。