更復雜的UI
現在我考慮使用XAML建立一個相對復雜的UI。把列表1中的代碼復制到XAMLPad中。圖4是XAMLPad所顯示的UI。
列表1:
<DockPanel Background="LightGreen" xmlns="http://schemas.microsoft.com/winfx/avalon/2005">
<TextBlock DockPanel.Dock="Bottom" HorizontalAlignment="Center">StatusBar</TextBlock>
<StackPanel Name="StackPanel1" DockPanel.Dock="Left" Background="LightYellow">
<TextBlock Margin="10,10,10,0">Select country</TextBlock>
<ComboBox Name="cbCountries" Margin="10,5,10,5">
<ComboBoxItem>Singapore</ComboBoxItem>
<ComboBoxItem>United States of America</ComboBoxItem>
<ComboBoxItem>United Kingdom</ComboBoxItem>
</ComboBox>
<ListBox Name="lstCountries" Margin="10,5,10,5">
<ListBoxItem>Singapore</ListBoxItem>
<ListBoxItem>United States of America</ListBoxItem>
<ListBoxItem>United Kingdom</ListBoxItem>
</ListBox>
<CheckBox Name="checkbox1" Margin="10,5,10,5">Checkbox</CheckBox>
<RadioButtonList Name="RadioButtonList1" Margin="10,5,10,5">
<RadioButton>Radio Button 1</RadioButton>
<RadioButton>Radio Button 2</RadioButton>
<RadioButton>Radio Button 3</RadioButton>
</RadioButtonList>
<TextBlock Margin="10,5,10,5">
<Hyperlink NavigateUri="page2.xaml">Page 2</Hyperlink>
</TextBlock>
</StackPanel>
<DockPanel DockPanel.Dock="Right">
<TextBlock DockPanel.Dock="Top" HorizontalAlignment="Center">Title Bar</TextBlock>
<DockPanel DockPanel.Dock="Bottom" Background="Red">
<TextBlock Margin="10,10,10,10" HorizontalAlignment="Left">Enter your name</TextBlock>
<TextBox Name="txtName" Margin="10,5,10,5" HorizontalAlignment="Left" Width="200"></TextBox>
<Button Name="BTnOK" Margin="5,5,10,5" Width="50" HorizontalAlignment="Left" >OK</Button>
</DockPanel>
<StackPanel Name="StackPanel2" Background="VerticalGradient Lavender Yellow">
<TextBlock Margin="10,10,10,10">Hello Avalon!</TextBlock>
<Button Margin="10,5,10,5" HorizontalAlignment="Left" Width="100">Left Button</Button>
<Button Margin="10,5,10,5" HorizontalAlignment="Center" Width="100">Center Button</Button>
<Button Margin="10,5,10,5" HorizontalAlignment="Right" Width="100">Right Button</Button>
</StackPanel>
</DockPanel>
</DockPanel>

圖4:XAMLPad中更高級的UI。這次我讓XAMLPad顯示了更多復雜的控件。
請注重這段代碼的下述特性:
·除了使用StackPanel元素之外,你還可以使用DockPanel元素對元素和其它的面板(例如StackPanel和DockPanel元素)進行分組。你可以使用DockPanel.Dock屬性把 “鎖定”在DockPanel元素內特定的位置(例如“”上、“左”、“右”或“下”)。
·你可以使用ComboBox、ListBox、Checkbox和RadioButtonList元素來建立習慣使用的控件(例如組合框、列表框、檢查框和單選框)。
·除了設置元素的背景色之外,你還可以用值(例如VerticalGradient Lavender Yellow)把它設置為傾斜填充。
·你可以使用HyperLink元素導航到另一個頁面。但是這個元素只能在某些特定類型的Avalon應用程序中起作用。你在下一部分可以看到這方面更多的內容。
Avalon應用程序的類型 到目前為止我一直使用XAMLPad來建立UI。但是,真實的應用程序需要實現業務邏輯。因此接下來我將使用Visual Studio 2005(現在處于Beta2測試中)來建立Avalon應用程序。
使用Visual Studio 2005 Beta 2建立新項目的過程是選擇文件->新建項目…。新建項目窗口就會出現(圖5所示)。

圖5:新建項目
模板。Visual Studio為Avalon提供了四種不同的模板類型。
在本文中我將把Visual Basic作為編程語言,因此在Visual Basic項下面,選擇Avalon,你將看到四種主要的Avalon項目模板類型:
·Avalon應用程序——與傳統的Windows應用程序類似;
·Avalon Express應用程序——寄宿在Internet瀏覽器中的應用程序;
·Avalon控件類庫——寄宿在其它的Avalon應用程序中的Avalon控件;
·Avalon導航應用程序——類似于Windows應用程序,只是它在“頁面”之間導航,而不是打開新窗口。
我將為你演示這四種類型中的三種。在本文中沒有演示Avalon控件類型。進入討論組討論。
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應用程序類型以及它們之間的差別。但是,這僅僅是冰山一角。進入討論組討論。
- u盤無法識別怎么辦,小編告訴你U盤無法識別怎
- usb無線網卡怎么用,小編告訴你安裝教程
- usb調試在哪,小編告訴你usb調試在哪
- 優盤不顯示,小編告訴你優盤不顯示怎么辦
- 低級格式化,小編告訴你硬盤怎么低級格式化
- 分區表丟失,小編告訴你分區表丟失如何修復
- 進入bios,小編告訴你戴爾筆記本進入bios設置u
- 怎么刷bios,小編告訴你華碩怎么刷bios
- 讀卡器怎么用,小編告訴你如何使用讀卡器
- bios升級,小編告訴你華碩主板bios怎么升級