發表文章

目前顯示的是 6月, 2009的文章

再談XAML與WPF

圖片
撰文:吳俊毅 時間:2009/6/11 在筆者先前討論過XBAP應用程式後再一次回到WPF的主題,在這個章節中筆者要說明XAML與WPF之間的關係,讀者先往下看幾個主題。 1. 再談XAML 什麼是XAML呢,XAML是(eXtensible Application Markup Language)的簡稱,XAML發音為”zammel”,而XAML為一種標籤語言,關於這個部分市面上許多書籍都已經講過太多了筆者快速的帶過就好,簡單的說XAML承襲XML的Well-Format文件的所有特性,在這裡微軟透過XAML描述並呈現WPF應用程式的外觀,它可以設置.cs的後置檔,程式的事件與運算邏輯可由後置檔案完成,WPF可在<Window>標籤內的x:Class=”命名空間.類別名稱” 如下: <Window x:Class="WpfHelloWorldApp.Window1"> </Window> 當然XAML檔案不一定要有後置檔,如上程式若去除掉x:Class=”WpfHelloWorldApp.Window1” 的敘述即表示沒有後置檔案,而通常沒有後置檔的XAML程式碼通常稱為loose XAML(鬆散的XAML),這種檔案通常只是將XAML當做文件來使用,如XPS Document或WF的Flow Document文檔等,而XAML檔案執行時會預先被編譯成BAML(Binary Application Markup Language)的二進位直接檔案,但它是一個副檔名為.g.cs的檔案,在使用正式版本的Visual Studio IDE工具後您通常無法在檔案總管中察覺這個檔案的存在,若您在InitializeComponent()點選右鍵a”移至定義”所看到的程式內容便是IDE工具(auto-generated)自動產生的BAML內容,它會在obj\Debug 下產生,而同樣是一個繼承Window的類別,只是會多實作IComponentConnector介面,在InitializeComponent() 中會透過System.Windows.Application.LoadComponent()方法將XAML的內容讀取進來,筆者擷取一段BAML範例內容如下: public partial class Window