學習WPF——了解WPF中的XAML


XAML的簡單說明
XAML是用於實例化.NET對象的標記語言,主要用於構建WPF的用戶界面
XAML中的每一個元素都映射為.NET類的一個實例,例如<Button>映射為WPF的Button對象
XAML可以在一個元素中嵌套另一個元素,例如Grid元素可以嵌套Button元素
 

了解XAML

VisualStudio創建一個窗口,默認情況下產生的代碼如下:
這段代碼中包含兩個標記元素,一個是Window,一個是Grid
Window是WPF頂級元素的一種,還有另外兩種頂級元素Page和Application
Window
用於描述一個窗口
Page
和Window類似,但它用於可導航的應用程序
Application
用於定義應用程序資源和啟動設置
任何一個XAML文檔只能擁有一個頂級元素

屬性

窗口標簽中Title、Height、Width都是窗口的屬性
在XAML文件中屬性的值的類型總是字符串,
但XAML的解析器可以把這些字符串轉換成.NET的任意類型
 

名稱空間

在上面代碼中,用xmlns屬性來標記此文檔從屬於哪個名稱空間
為什么需要名稱空間呢?
如果我們在第三方組件中定義了Window類,如果沒有一個名稱空間做限定的話,
編譯器不知道我們將使用哪個Window類型來渲染窗口
我們在上面的代碼中,看到了兩個名稱空間,一個是WPF核心名稱空間、一個是XAML名稱空間
WPF核心名稱空間
包含所有WPF類,包含用來構建用戶界面的控件,是文檔的默認名稱空間
XAML名稱空間
包含各種XAML實用特性,這些特性可以影響文檔的解釋方式,該名稱空間被映射為前綴x,使用前需要標注前綴x,比如:<x:ElementName>
有了名稱空間的限定,我們直接書寫的<Grid>標簽,才可以映射到System.Windows.Controls.Grid類上

代碼隱藏類

XAML創建用戶界面,但交互規則還是需要.NET語言編寫
x:Class屬性標記着與該XAML文件相配合的.NET類
注意這個類是一個“部分類”
這個部分類的構造函數中調用了InitializeComponent方法,
這個方法負責創建控件對象、設置屬性、綁定事件、構造用戶界面等工作

復雜屬性

有些屬性的值不是一個簡單類型,而是一個對象,不如下面這個Grid的背景顏色
我們現在只要知道XAML解析器也能創建出復雜屬性對應的值即可

標記擴展

如果我們希望把屬性值綁定為一個已經存在的對象,那么我們可以使用靜態標記擴展
標記擴展還有很多其他的用法,我們以后再聊
這里也涉及到了屬性綁定,我們以后再聊

附加屬性

對於嵌套的元素,子元素可以使用父元素定義的一些屬性,這類屬性就是附加屬性
在WPF中附加屬性多用於布局
修改記錄
2015-1-5:完成全部內容
參考資料
《Pro WPF 4.5 in C# 4th Edition》

備注

本篇只簡單介紹了XAML的常見知識,還有一些不常見的知識、高級主題暫時沒有涉及
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM