Avalon應用程式
首先,選中Avalon應用程式模板並點擊「確定」。你將看到預定的Window1.xaml視窗和圖6所示的解決方案瀏覽器。

圖6:Avalon應用程式專案。這個抓圖顯示了Visual Studio 為Avalon應用程式模板建立的模板
請注意,Avalon應用程式專案類型的根元素是Window。除了我們在上一部分討論的StackPanel和DockPanel之外,你還可以使用Grid元素對視窗中的控件進行定位。Window1.xaml.vb是網頁面後台的代碼,也是你編寫應用程式代碼的地方。Window元素中的x:Class內容指定了類的名稱。在編譯階段,這個網頁面會被編譯為一個局部(partial)類,與後台代碼(Window1.xaml.vb)一起形成完整的應用程式。
複製列表1中的代碼並替換Window1.xaml文件中的Grid元素。在Button元素中,增加Click內容並設置它的值(圖7所示)。

圖7:設置點擊事件。給Button(按鍵)元素新增一個事件
從本質來看,你為按鍵控件建立了一個事件處理程式。當按鍵被點擊的時候,ButtonClick事件會處理這個點擊事件。如果你要完善這個事件,請雙擊解決方案瀏覽器中的Window1.xaml.vb。你會看到兩個示例事件都被註釋了。取消ButtonClick事件的註釋並刪除該事件處理程式末尾的Handles子句。ButtonClick事件現在應該是這樣的:
' Button1的事件處理程式
Private Sub ButtonClick(ByVal sender As Object, ByVal e As RoutedEventArgs)
End Sub
對於這個例子來說,我們只需要簡單地顯示一個「Hello World!」消息,看看事件處理程式是否起作用了。在未來一些文章中我將仔細地解釋這個特性。
' Button1的事件處理程式
Private Sub ButtonClick(ByVal sender As Object, _
ByVal e As RoutedEventArgs)
' 新增下面的內容
MsgBox("Hello World!")
End Sub
我們完成了!現在按F5執行應用程式。你將看到應用程式視窗,當你點擊OK按鍵的時候,會看到一個消息框(圖8所示)。

圖8:測試應用程式,你的第一個Avalon應用程式
現在點擊視窗上的「Page 2」連接,沒有發生任何事情。這是因為Avalon應用程式專案類型不支持響導。你必須像傳統的Windows應用程式一樣打開新視窗。
停止除錯並給應用程式新增一個新的Avalon視窗(在解決方案瀏覽器中右鍵點擊專案名稱,並選擇新增->新專案)。選擇Avalon視窗模板並新增「新增」(圖9所示)。

圖9:放入一個窗體。這個抓圖顯示了如何給專案新增一個新的Avalon窗體。
你的專案現在有兩個視窗了(圖10所示)——Window1.xaml和Window2.xaml。

圖10:兩個窗體。它顯示了專案中的文件。
應用程式中的每個窗體都有一組Window.xaml文件。
我們修改ButtonClick事件:
Private Sub ButtonClick(ByVal sender As Object, _
ByVal e As RoutedEventArgs)
Dim win2 As New Window2
win2.Show()
End Sub
按F5除錯應用程式並再次點擊OK按鍵。你現在會看到新視窗出現了(圖11所示)。

圖11:下一個窗體。點擊按鍵打開一個新窗體。
Avalon Express應用程式
Avalon Express應用程式會寄宿在Internet瀏覽器中。我們使用Visual Studio 2005,通過選擇Avalon Express應用程式模板來建立Avalon Express應用程式。
在預定情況下,它會建立Page1.xaml(圖12所示)。

圖12:Visual Studio為Avalon Express應用程式模板建立的模板
請注意該XAML網頁面的根元素是Page,而不是Window。同樣,我們用列表1中的內容替換Grid元素。在解決方案瀏覽器中右鍵點擊專案,選擇新增->新專案給專案新增一個新的網頁面。在「新增新專案」交談視窗中,選擇Avalon網頁面(圖13所示),預定的名稱不改。點擊「新增」。

圖13:從「新增新專案」交談視窗中選擇Avalon網頁面給專案新增一個新的Avalon網頁面。
按F5除錯應用程式。Internet瀏覽器會載入,應用程式的樣子如圖14所示。

圖14:在IE中。這個抓圖再次顯示了該應用程式,不過這次是寄宿在IE中。
這種專案類型的一個有趣的特性是,你如果仍然使用MsgBox()函數來顯示消息框,它還是可以工作的。
請注意應用程式上方的響導按鍵(圖15所示)。這兩個按鍵允許你在網頁面之間進行響導,與瀏覽Web網頁面類似。

圖15:響導按鍵。
在Express專案中Avalon為你建立了傳統瀏覽器樣式模板的動畫按鍵
如果你想看到網頁面響導是如何工作的,請點擊「Page 2」連接,它會載入Page2.xaml。對於Avalon Express應用程式專案類型來說,所有的響導都發生在瀏覽器之中;不會建立新視窗。你可以通過點擊Page2.xaml.的「後退」響導按鍵返回到前一個網頁面(Page1.xaml)。
Avalon響導應用程式
Avalon應用程式的第三種類型就是Avalon響導應用程式,它可能會成為最普遍的Avalon應用程式類型。使用Visual Studio 2005,選擇Avalon響導應用程式模板即可建立新的Avalon響導應用程式。
與Avalon Express應用程式類似,在預定情況下會建立Page1.xaml網頁面。像上面一樣,用列表1中的內容替換Grid元素。給專案新增一個新的網頁面。在「新增新專案」交談視窗中選擇Avalon網頁面,預定名稱不改。點擊「新增」。
按F5除錯應用程式。這一次應用程式沒有寄宿在IE中,它有自己的視窗,與IE非常相似(圖16所示)。

圖16:執行應用程式。這是最終的應用程式。
點擊「Page 2」連接會載入Page2.xaml。如果要返回前面一個網頁面,只需要點擊「後退」響導按鍵。
與Avalon Express應用程式專案類型相似,Avalon響導應用程式中的所有響導會在視窗內部發生,不會建立新視窗。
在本文中,你看到了Avalon的一些基礎知識,以及XAML在建立Avalon應用程式UI的過程中是扮演什麼樣的角色。你還看到了幾種不同的Avalon應用程式類型以及它們之間的差別。但是,這僅僅是冰山一角。