国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用Avalon建立未來的Windows用戶界面

2019-11-17 04:41:16
字體:
來源:轉載
供稿:網友

  大多數開發人員對于即將到來的Windows Vista(以前稱為Longhorn)中的兩個特性很感愛好,其中一個就是Avalon。Avalon是WinFX中顯示子系統類庫的代號,它是Vista/Longhorn中新的應用程序編程接口(API)。Avalon由一個顯示引擎和一個受控代碼框架組件組成。
你可以使用Avalon建立逼真的Longhorn應用程序,把應用程序UI、文檔和媒體內容混合在一起。

  盡管Vista大約還需要過一年時間才會發布(預計發布時間是2006年末),但是微軟最近還是在Beta1 RC中為公眾提供了Avalon和Indigo(開發者感愛好的另一個特性)的一個版本。任何希望在Windows xp上測試Avalon和Indigo特性的人員都可以下載這個RC beta版,并學習Avalon和Indigo提供的重大特性。

  起步

  假如你希望在Windows XP上試驗Avalon,需要安裝下面一些內容:

  ·微軟預發布的軟件“Avalon”和“Indigo”Beta1 RC:

http://www.microsoft.com/downloads/details.aspx?familyid=b789bc8d-4f25-4823-b6aa-c5edf432d0c1&displaylang=en

  ·WinFX SDK(軟件開發工具包):

http://download.microsoft.com/download/5/4/0/5407D6E4-740E-413E-8E91-EF7AC53A478A/en_winfx_sdk_beta1_RC.iso

  ·微軟Visual Studio 2005

  編譯和運行Avalon應用程序的最簡單的途徑是使用Visual Studio 2005,它現在處于Beta 2測試中(你可以使用WinFX SDK中包含的MSBuild工具來手動編譯Avalon應用程序,但是這個過程非常乏味,我們并不推薦)。

  XAML——Vista標記語言

  在Avalon中,你使用XAML標記語言來建立應用程序的UI。使用XAML建立UI的過程與建立Html頁面的過程相似。你使用標記來呈現(render)那些希望顯示在頁面上的控件。XAML與HTML不同,它是基于xml的,因此你必須確保XAML頁面嚴格地遵循XML的規則,例如元素(element)和屬性(attribute)的名稱是大小寫敏感的,必須恰當地為屬性提供值,等等。

  XAML中的每個元素都被映射為一個類,屬性(attribute)則被映射為屬性(PRoperty)。編譯XAML應用程序的時候,UI被轉換為對象模型(object-model)代碼并使用局部(partial)類與后臺代碼組合在一起。因此,除了使用XAML生成UI之外,你還可以使用代碼編程來建立UI。在本文后面我將為你解釋后臺代碼的使用方法。

  目前的WinFX SDK不支持任何用于建立XAML UI的可視化編輯器,但是毫無疑問,微軟不久就會發布一個。到時候你就可以手動編寫XAML頁面了。與WinFX SDK一起提供的XAMLPad編輯器答應你快速地建立和測試那些用XAML建立的用戶界面。

  載入XAMLPad的步驟是“開始->程序->微軟WinFX SDK ->工具-> XAMLPad”。

  XAMLPad編輯器窗口被分成兩個面板:你在下面的面板中輸入XAML代碼,上面的面板將根據你輸入的XAML代碼實時地顯示UI。XAMLPad易于使用,不需要你編譯。現在我將介紹少量的簡單練習內容,用于演示Avalon可以建立的不同類型的應用程序。

  我們開始建立示例應用程序,在XAMLPad中輸入下面的代碼:


<StackPanel Background="LightBlue" xmlns="http://schemas.microsoft.com/winfx/avalon/2005">
<Button Name="Button1" Width="100" HorizontalAlignment="Left" Margin="10,10,10,5">
 This is a button
</Button>
<TextBlock HorizontalAlignment="Left" Margin="10,5,10,5">
 This is a text block
</TextBlock>
<TextBox Name="Button1" Width="200" HorizontalAlignment="Left" Margin="10,5,10,5">
 This is a textbox
</TextBox>
</StackPanel>
  輸入完成以后,你將看到XAMLPad呈現的UI(圖1所示)。

用Avalon建立未來的Windows用戶界面
圖1:呈現UI的 XAMLPad。XAMLPad上面的面板實時地呈現下面的面板中輸入的代碼。

  假如XAML代碼中有錯誤,代碼將會顯示為紅色,錯誤信息會出現在屏幕底部。

  現在仔細查看一下你剛剛輸入的代碼。首先,StackPanel元素處理頁面的布局,同時作為其它控件(例如按鈕和文本框)的容器。StackPanel控件把自己所包含的控件排列成一條線,要么水平排列,要么垂直排列。在默認情況下,對齊方式是垂直的,也就是一個控件在另外一個控件的上面(圖1所示)。假如要水平地排列控件,只需要簡單地把StackPanel元素的Orientation屬性設置為“Horizontal”(圖2所示)。

用Avalon建立未來的Windows用戶界面
圖2:水平排列控件。
通過把StackPanel 元素的Orientation屬性設置為Horizontal,還可以改變控件默認的垂直排列方式。

  Button元素在頁面上顯示一個按鈕。在默認情況下,按鈕的寬度剛剛能夠容納你所設置的文本(使用該元素的文本內容設置)。但是,你可以通過設置Width屬性手動地調整按鈕控件的寬度。你可以使用HorizontalAlignment屬性來調整的按鈕元素的位置。Margin(頁邊空白)屬性在控件上設置了一個不可見的包裝,這樣就保證了控件之間有最小的距離,因此避免了控件偶然的“重疊”(圖3所示)。Margin屬性的值按次序設置——分別是“左、上、右、下”。

用Avalon建立未來的Windows用戶界面
圖3:使用Margin屬性。
按鈕控件被“空白”包圍著,可以防止其它控件被放置得過于靠近。

  TextBlock元素在頁面上顯示標簽(平面文本內容不能被選中或改變),TextBox控件在頁面上顯示文本框(用戶可修改的文本)。進入討論組討論。

  更復雜的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>

用Avalon建立未來的Windows用戶界面
圖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所示)。

用Avalon建立未來的Windows用戶界面
圖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所示的解決方案瀏覽器。

用Avalon建立未來的Windows用戶界面
圖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所示)。

用Avalon建立未來的Windows用戶界面
圖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所示)。


用Avalon建立未來的Windows用戶界面
圖8:測試應用程序,你的第一個Avalon應用程序

  現在點擊窗口上的“Page 2”鏈接,沒有發生任何事情。這是因為Avalon應用程序項目類型不支持導航。你必須像傳統的Windows應用程序一樣打開新窗口。

  停止調試并給應用程序添加一個新的Avalon窗口(在解決方案瀏覽器中右鍵點擊項目名稱,并選擇添加->新項目)。選擇Avalon窗口模板并添加“添加”(圖9所示)。

用Avalon建立未來的Windows用戶界面
圖9:放入一個窗體。這個截圖顯示了如何給項目添加一個新的Avalon窗體。

  你的項目現在有兩個窗口了(圖10所示)——Window1.xaml和Window2.xaml。

用Avalon建立未來的Windows用戶界面
圖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所示)。

用Avalon建立未來的Windows用戶界面
圖11:下一個窗體。點擊按鈕打開一個新窗體。
進入討論組討論。

  Avalon Express應用程序

  Avalon Express應用程序會寄宿在Internet瀏覽器中。我們使用Visual Studio 2005,通過選擇Avalon Express應用程序模板來建立Avalon Express應用程序。

  在默認情況下,它會建立Page1.xaml(圖12所示)。

用Avalon建立未來的Windows用戶界面
圖12:Visual Studio為Avalon Express應用程序模板建立的模板

  請注重該XAML頁面的根元素是Page,而不是Window。同樣,我們用列表1中的內容替換Grid元素。在解決方案瀏覽器中右鍵點擊項目,選擇添加->新項目給項目添加一個新的頁面。在“添加新項目”對話框中,選擇Avalon頁面(圖13所示),默認的名稱不改。點擊“添加”。

用Avalon建立未來的Windows用戶界面
圖13:從“添加新項目”對話框中選擇Avalon頁面給項目添加一個新的Avalon頁面。

  按F5調試應用程序。Internet瀏覽器會載入,應用程序的樣子如圖14所示。

用Avalon建立未來的Windows用戶界面
圖14:在IE中。這個截圖再次顯示了該應用程序,不過這次是寄宿在IE中。

  這種項目類型的一個有趣的特性是,你假如仍然使用MsgBox()函數來顯示消息框,它還是可以工作的。

  請注重應用程序上方的導航按鈕(圖15所示)。這兩個按鈕答應你在頁面之間進行導航,與瀏覽Web頁面類似。

用Avalon建立未來的Windows用戶界面
圖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所示)。


用Avalon建立未來的Windows用戶界面
圖16:運行應用程序。這是最終的應用程序。

  點擊“Page 2”鏈接會載入Page2.xaml。假如要返回前面一個頁面,只需要點擊“后退”導航按鈕。

  與Avalon Express應用程序項目類型相似,Avalon導航應用程序中的所有導航會在窗口內部發生,不會建立新窗口。

  在本文中,你看到了Avalon的一些基礎知識,以及XAML在建立Avalon應用程序UI的過程中是扮演什么樣的角色。你還看到了幾種不同的Avalon應用程序類型以及它們之間的差別。但是,這僅僅是冰山一角。進入討論組討論。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青浦区| 陇南市| 砀山县| 盐源县| 昌乐县| 霍山县| 浮梁县| 滁州市| 呼玛县| 锦州市| 昭平县| 罗山县| 荔波县| 耒阳市| 肥乡县| 兰溪市| 中方县| 建昌县| 嘉善县| 乡城县| 申扎县| 大埔县| 灌南县| 保亭| 萨嘎县| 耒阳市| 喜德县| 昭通市| 平潭县| 资源县| 禹城市| 白朗县| 平昌县| 晴隆县| 皮山县| 罗甸县| 右玉县| 祁门县| 东方市| 于田县| 阿图什市|