熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用VS2005開發XAML程序

2013-11-13 10:06:50  來源: .NET編程 
如果我們使用Visual Studio 來開發一個XAML程序那與上述的手動創建XAML程序過程來說是相對便捷的你可以直接選擇一個WinFX模板來創建特定類型的WPF程序Visual Studio會自動為該WPF程序創建相應的項目文件和應用程序清單現在我們可以創建的WPF程序類型有如下的四種

   WinFX Wndows Application
   WinFX Web Browser Application
   WinFX Service Library
   WinFX Customer Control Library

  然而針對WinFX開發的Visual Studio版本還沒有正式推出所以Visual Studio 缺乏對WinFX程序開發這方面的一些完善支持為此要編輯XAML和相應的代碼後置文件(xamlcs)時有時還是需要開發人員手動地進行編輯

  在這裡假設你已經安裝好了運行XAML所需的軟件環境現在我們來使用Visual Studio 創建一個WPF程序至於是選擇WinFX Wndows Application模板還是WinFX Web Browser Application模板取決於你所要創建的是宿主於浏覽器的程序還是窗體程序現在我們在新建項目對話框中的WinFX Web Browser Application模板輸入該WPF程序的項目名稱並選擇好程序保存在硬盤上的位置點擊確定按鈕Visual Studio就自動為該WPF程序生成默認的XAML和代碼後置文件

    點擊放大此圖片

  提示無論你是否使用Visual Studio在創建一個WinFX Wndows Application和一個WinFX Web Browser Application時各自的xaml文件代碼還是存在一些細微差別的在一個Browser Application中默認起始頁的根元素為Page而一個Wndows Application中默認起始頁的根元素為Window而Window類是無法在Browser Application中使用的這是因為運行在浏覽器中的WPF程序是在部分信任的沙箱內操作(沙箱能夠防止客戶端計算機受到惡意應用程序的侵害)為此它沒有打開一個新Windows窗體的權限

  在解決方案資源管理器窗口中可以看到Visual Studio為當前WPF程序所自動生成的XAML和代碼後置文件由於在Visual Studio中會自動生成相應的項目文件使用我們不必詳細了解該Browser Application在生成時其底層的實現細節但是由於WPF程序和應用程序定義文件和相關的XAML頁面文件戚戚相關為此最好還是詳細了解下各個文件的具體內容下面我們通過雙擊解決方案資源管理器中的文件圖標打開相應的文件在默認狀態下一個xaml文件存在三個試圖方式分別為設計試圖XAML試圖和源碼試圖如果要查看相應的XAML代碼的話你可以點擊XAML按鈕切換到XAML試圖狀態下這是打開應用程序定義文件Appxaml的相應界面

  

  

  點擊XAML試圖按鈕後Appxaml頁面對應的XAML代碼如下

<Application x:Class=BrowserDemoApp
xmlns=
xmlns:x=
StartupUri=Pagexaml

<ApplicationResources>

</ApplicationResources>
</Application>

  在第行代碼處我們可以看到在應用程序定義文件中我們使用了Application元素並且用x:Class 屬性指定了一個與之關聯的C#不完全類(後一個程序清單的第行代碼所示)而後在程序編譯時會自動將應用程序定義文件和包含關聯C#不完全類的代碼後置文件這兩部分結合在一起從而創建一個完整的BrowserDemo命名空間下的App類注意BrowserDemoApp類是從WPF提供的SystemWindowsApplication類中派生的行代碼使用了StartupUri屬性為該WPF程序指定首次運行程序時要加載的XAML頁面文件在一個Browser Application類型的WPF程序中我們可以添加多個XAML頁面並支持在這些頁面間進行跳轉和切換

  提示

  而Appxamlcs的代碼如下(可以通過Appxaml頁面的Source按鈕切換到源碼試圖)

using System;
using SystemWindows;
using SystemWindowsNavigation;
using SystemData;
using SystemXml;
using SystemConfiguration;

namespace BrowserDemo
{
 /// <summary>
 /// Interaction logic for Appxaml
 /// </summary>

 public partial class App : Application
 {

 }
}
  Pagexaml頁面對應的XAML代碼如下

<Page x:Class=BrowserDemoPage
xmlns=
xmlns:x=
Title=Page

<Grid>
</Grid>
</Page>
  我們在第行代碼處用x:Class屬性指定的BrowserDemoApp類是從WPF提供的SystemWindowsApplication類中派生的並且用屬性Title指定了該頁面在呈現時的標題行代碼使用了一個Grid元素微軟推薦開發人員使用該元素來布局XAML頁面上的各個界面元素這是因為Grid元素在定位頁面上的各個元素方面有著極大的靈活性至於該元素的具體用法將在本章的後續章節進行介紹

using System;
using SystemCollectionsGeneric;
using SystemText;
using SystemWindows;
using SystemWindowsControls;
using SystemWindowsData;
using SystemWindowsDocuments;
using SystemWindowsInput;
using SystemWindowsMedia;
using SystemWindowsMediaImaging;
using SystemWindowsNavigation;
using SystemWindowsShapes;

namespace BrowserDemo
{
 /// <summary>
 /// Interaction logic for Pagexaml
 /// </summary>

 public partial class Page : Page
 {

  public Page()
  {
   InitializeComponent();
  }

 }
}  現在我們在這個Browser Application的Pagexaml頁面上添加一個按鈕並對該按鈕的單擊事件添加一個事件處理方法以顯示信息首先我們在工具箱上拖拽一個Button控件切換到XAML視圖後你會發現在<Grid>…</Grid>兩元素之間添加了一個Button元素我們可以設置其相應的屬性最終Pagexaml的代碼如下

<Page x:Class=BrowserDemoPage
xmlns=
xmlns:x=
Title=Page

<Grid>
<Button Height= Width= FontSize= Background=Aqua
Name=MyButton Content=Click Me Click=ChangeMe
</Button>
</Grid>
</Page>

  由於要處理按鈕的單擊事件為此我們要編寫相應的事件處理方法其代碼如下

void ChangeMe(object sender RoutedEventArgs eventArgs)
{
 count++;
 MyButtonContent = You have clicked + count + times!;
}
  如上述的代碼所示我們每點擊一次按鈕都會導致該按鈕上顯示的內容發生改變(每次count的值都自增)

  而事件處理代碼我們一般是在XAML頁面對應的代碼後置文件中進行編寫我們將事件處理代碼要添加到Pagexaml頁面的代碼後置文件Pagexamlcs中改變後的代碼如下

using System;
using SystemCollectionsGeneric;
using SystemText;
using SystemWindows;
using SystemWindowsControls;
using SystemWindowsData;
using SystemWindowsDocuments;
using SystemWindowsInput;
using SystemWindowsMedia;
using SystemWindowsMediaImaging;
using SystemWindowsNavigation;
using SystemWindowsShapes;

namespace BrowserDemo
{
 /// <summary>
 /// Interaction logic for Pagexaml
 /// </summary>

 public partial class Page : Page
 {
  int count = ;
  public Page()
  {
   InitializeComponent();
  }

  void ChangeMe(object sender RoutedEventArgs e)
  {
   count++;
   MyButtonContent = You have clicked + count + times!;
  }
 }
}
  我們在第行定義了一個名為count的變量並初始化其值為在第行代碼處是Button按鈕的事件處理方法這裡的事件處理方法名ChangeMe就是由Pagexaml中的Button元素的Click指定的因為在一個WPF程序中可能包含若干個Button元素所以你可以在XAML文件用Name屬性為該Button元素指定一個惟一的名稱這裡為MyButton以後在對應的代碼後置文件中應用該Button元素時就不用再對這個元素進行聲明了並且在編譯時Button元素的聲明和相應的事件處理方法將合並到同一個類中這裡為BrowserDemoPage

  提示在添加了元素和相應的處理方法邏輯後我們就可以采用和以前類似的用Visual Studio生成NET應用程序的方式來生成WPF程序也就是說我們可以使用Visual Studio菜單上的生成生成XX(XX為項目名)命令來編譯程序編譯完畢後就可以對該程序進行測試調試和部署

  保存文件的最後一次改動後再使用啟動調試按鈕生成該Browser Application程序最後得到的呈現效果如下


點擊放大此圖片
  下圖是點擊按鈕次後的顯示效果


點擊放大此圖片
  上述的整個實現過程對於NET開發人員來說應該是非常熟悉的因為XAML頁面有點類似於ASPNET中的Web窗體都是用來構建程序的界面布局而XAML頁面對應的代碼後置文件則等類似於ASPNET中用來處理事件和用戶請求信息的服務器端代碼

  我們在前面提及過使用Visual Studio來創建一個WPF程序時無需開發人員編寫項目文件而且也不用考慮微軟新一代統一生成平台MSBuild的運作方式上述的這些必需的文件都會由Visual Studio自動給開發人員生成你僅需考慮WPF程序中的應用程序定義文件和XAML頁面文件即可


點擊放大此圖片


From:http://tw.wingwit.com/Article/program/net/201311/12592.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.