XAML实例教程系列 – 对象和属性
XAML是一種敏感型,聲明性語言,對于字符大小寫有嚴(yán)格的約束,在項目中,以".xaml"作為文件擴(kuò)展名。XAML頁面和ASP.NET的ASPX頁面類似,都具有一個后臺代碼文件控制頁面邏輯處理,這一機(jī)制將用戶界面設(shè)計和后臺代碼設(shè)計分割,這意味著項目美工人員可以使用Expression Blend進(jìn)行XAML用戶界面設(shè)計,同時后臺代碼開發(fā)人員可在Visual Studio中共享該XAML文件,并同時設(shè)計其后臺代碼。
XAML學(xué)習(xí)方法和經(jīng)驗
根據(jù)微軟Open Specification Promise(OPS) program文檔介紹,XAML文檔是一個XML文檔,在一定程度上XAML繼承了大量的XML概念,而最重要的兩個概念分別是Element(元素)的定義和Property(屬性)的使用。 所以,如果你熟悉XML,其實已經(jīng)具備XAML語法基礎(chǔ), 如果你具有XML開發(fā)經(jīng)驗,學(xué)習(xí)XAML將會事半功倍。?理解和掌握XAML語言最簡單的方法是使用具有XAML視圖工具和XAML代碼相互比較學(xué)習(xí),這樣會更形象化理解XAML的使用。例如使用Visual Studio或Expression Blend等。使用設(shè)計工具,可以同時顯示XAML代碼和設(shè)計視圖效果,并且設(shè)計視圖效果能夠根據(jù)XAML代碼更新即時更新。 值得注意的是,微軟為開發(fā)人員和設(shè)計人員提供了方便快捷的設(shè)計方式,使用簡單的拖拽即可完成一個控件或者頁面的聲明,但是作為一名專業(yè)開發(fā)人員,需要對XAML代碼理解和掌握,否則一旦遇到復(fù)雜項目,將會出現(xiàn)XAML開發(fā)瓶頸。在開始介紹XAML基礎(chǔ)前,首先創(chuàng)建一個實例項目,通過實例項目代碼幫助學(xué)習(xí)XAML語言。在Visual Studio 11中創(chuàng)建一個Windows 8 Metro Style空白頁面項目,項目名“XamlGuide",
? 默認(rèn)BlankPage.xaml代碼:
?
XAML基礎(chǔ) - Object (對象)
在XAML代碼中,一個Element(元素)通常是一個Object(對象),在代碼中映射對應(yīng).Net類。簡單理解,在XAML中聲明一個Element元素,也就是對相應(yīng)公共語言運行類庫進(jìn)行一次實例化操作。?
XAML代碼聲明一個元素對象,必須由一個開始標(biāo)簽“<元素對象>”和一個結(jié)束標(biāo)簽“</元素對象>”構(gòu)成,基本語法如下:? <元素對象></元素對象>例如,在XAML中聲明一個文本框,代碼如下:
<TextBox></TextBox> 上述代碼中開始標(biāo)簽“<TextBox >”是實例化對象名稱。結(jié)束標(biāo)簽“</TextBox >”,是對應(yīng)開始標(biāo)簽中的元素對象名稱。 在windows 8和silverlight的XAML語法中,支持略縮式元素結(jié)束標(biāo)簽,其語法格式如下: <TextBox /> 該語法格式省略</TextBox>結(jié)束標(biāo)簽,使用“/”符號作為元素結(jié)束符。 值得注意的是,XAML中Elements(元素)和Attributes(特性)名稱是字符大小寫敏感型,也就是大寫和小寫字符命名具有不同的含義。在上述代碼中,如果使用<textbox>,XAML語法解析器將返回錯誤信息,無法對textbox元素進(jìn)行實例化。?
XAML基礎(chǔ) - Property (屬性)
在面向?qū)ο蟪绦蜷_發(fā)中,我們所提及的屬性,即是指對象的屬性。而開發(fā)過程中,對象屬性也是最重要,最常用的概念。?在XAML代碼中,允許開發(fā)人員聲明“元素對象”,不同的“元素對象”對應(yīng)著多個對象屬性。例如,一個TextBox文本框,有背景屬性,寬度屬性,高度屬性等。為了適應(yīng)實際項目的需求,XAML提供三種方法設(shè)置屬性,分別是:
1.通過Attribute特性設(shè)置對象屬性; 2.通過Property屬性元素設(shè)置對象屬性; 3.通過隱式數(shù)據(jù)集設(shè)置對象屬性; 下面將分別介紹這三種屬性設(shè)置方法的基礎(chǔ)語法和使用方法。Attributes特性的概念
? 在XAML代碼中,允許在開始標(biāo)簽的對象名后使用Attributes(特性)定義一個或者多個對象元素的屬性,實現(xiàn)屬性賦值操作,其語法結(jié)構(gòu)如下 <元素對象 屬性名=“屬性值” 屬性名=“屬性值” …></元素對象>? 例如,在TextBox文本框中添加默認(rèn)文本內(nèi)容,將文本內(nèi)容賦值到Text屬性即可, <TextBox Text=“XAML實例教程系列”></TextBox> 由于元素對象屬性名在開始標(biāo)簽內(nèi)部,所以這種表達(dá)方式也被稱為“內(nèi)聯(lián)屬性”。 Property屬性元素的概念 使用XAML的Attribute特性可以簡單快捷的設(shè)置對象的屬性,其屬性值局限于簡單的字符形式。在實際項目中,經(jīng)常會遇到復(fù)合型控件或者自定義控件引用較為復(fù)雜的對象屬性,以達(dá)到個性化的效果。對此Attribute特性無法支持,從而引入Property屬性元素的概念。 在傳統(tǒng).Net開發(fā)語言中,調(diào)用一個對象屬性,可以簡單的使用以下格式實現(xiàn): 元素對象.屬性 = 屬性值 例如,在C#代碼中,調(diào)用一個按鈕的內(nèi)容屬性,代碼為: Button.Content = “XAML實例教程系列”; 而在XAML代碼中,其調(diào)用方法類似與.Net開發(fā)語言屬性使用方法,其語法格式為: <元素對象> ? <元素對象.屬性> ? ? ?<屬性設(shè)置器 屬性值=“”> ? </元素對象.屬性> </元素對象>
其中,屬性設(shè)置器可以設(shè)置為較為復(fù)雜的對象元素,例如布局控件元素,自定義控件元素等。
下面是用一個按鈕控件演示Property屬性的作用,設(shè)置按鈕內(nèi)容是使用Content屬性,如果使用Attribute特性設(shè)置按鈕內(nèi)容,如下代碼:? 其運行結(jié)果為:
? 如果需要在按鈕內(nèi)容中添加一個圖片,使其具有個性化效果,將無法使用Attribute特性進(jìn)行設(shè)置,這時可以嘗試使用Property屬性設(shè)置方法,例如:
在上面的示例代碼中,按鈕的Content內(nèi)容屬性以<元素對象.屬性>的形式出現(xiàn)在<Button></Button>中,屬性值設(shè)置器被StackPanel布局控件替代,在StackPanel布局控件中,分別定義了Image控件和TextBlock控件,用來顯示圖片和按鈕文本內(nèi)容,其運行效果如下:?
? 從示例中可以看出,使用元素對象的Property屬性設(shè)置方法,比Attribute特性要靈活和強(qiáng)大。如果使用Property屬性設(shè)置簡單文本,也可以使用以下方法:
其運行效果和Attribute特性設(shè)置按鈕內(nèi)容相同。Property屬性元素是用戶界面設(shè)計中最常用的屬性設(shè)置方法,在隨后的章節(jié)中會經(jīng)常出現(xiàn)。?
隱式數(shù)據(jù)集設(shè)置對象屬性 通過學(xué)習(xí)Property屬性元素,可以了解到XAML的元素對象屬性,不僅包含單一對象屬性,同時還支持復(fù)雜屬性,屬性值可以為簡單的字符數(shù)據(jù)類型,同時也可以是一個數(shù)據(jù)集。為了簡化XAML代碼復(fù)雜性,提高代碼易讀性,XAML提供隱式數(shù)據(jù)集設(shè)置對象屬性方法。例如,在XAML中為一個ComboBox組合框賦值,傳統(tǒng)代碼如下:
? 在以上代碼中,使用了<ComboBox.Items>屬性賦值ComboBoxItem內(nèi)容,使用隱式數(shù)據(jù)集設(shè)置對象屬性方法,可以修改以上代碼為:
?
從對比以上代碼可以看出<ComboBox.Items>被刪除后,<ComboBox>仍舊可以對ComBoxItem進(jìn)行賦值操作。其運行結(jié)果和使用Property屬性元素屬性賦值相同:?
?
另一個隱式數(shù)據(jù)集屬性賦值的例子,在XAML代碼可以直接生成漸變背景效果,實現(xiàn)方法是使用畫刷類的GradientStops屬性控制,在下面的代碼中,我們嘗試生成一個藍(lán)色背景漸變效果:?
?
在以上代碼中,對<LinearGradientBrush.GradientStops>屬性賦值,使用<GradientStopCollection>數(shù)據(jù)集描述漸變效果。如果使用隱式數(shù)據(jù)集屬性賦值方法,則可以修改以上代碼為:?
?
兩段代碼運行結(jié)果相同:
?? 隱式數(shù)據(jù)集屬性賦值方法在Windows 8和Silverlight自定義控件模板和樣式中經(jīng)常用到,是常用屬性賦值方法之一。
今天暫時介紹到這里,歡迎留言討論。
| 源代碼下載 |
?
歡迎大家留言交流,或者加入QQ×××流學(xué)習(xí):
22308706(一群) 超級群500人
37891947(二群) 超級群500人
100844510(三群) 高級群200人
32679922(四群) 超級群500人
23413513(五群) 高級群200人
32679955(六群) 超級群500人
88585140(八群) 超級群500人
128043302(九群 企業(yè)應(yīng)用開發(fā)推薦群) 高級群200人
101364438(十群) 超級群500人
68435160(十一群 企業(yè)應(yīng)用開發(fā)推薦群)超級群500人
轉(zhuǎn)載于:https://blog.51cto.com/kevinfan/872476
總結(jié)
以上是生活随笔為你收集整理的XAML实例教程系列 – 对象和属性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: silverlight后台加载本地图片
- 下一篇: ASP.NET系统 + Access数据