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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

XAML開發(fā)入門之XAML核心語法

2019-11-17 04:43:27
字體:
供稿:網(wǎng)友

  就如同其它的基于xml的標(biāo)記語言一樣,XAML大體上也遵循XML的語法規(guī)則。例如每個XAML元素包含一個名稱以及一個或多個屬性。在XAML中,每個屬性都是和某個WPF類的屬性相對應(yīng)的,而且所有的元素名稱都和WPF中定義的類名稱相匹配。例如<Button>元素就和System.Windows.Controls.Button類對應(yīng)。
 
  XAML是一個純粹的標(biāo)記語言,這也就意味著某個元素要實(shí)現(xiàn)一個事件的處理時,需要在該元素中通過特定的屬性來指定相應(yīng)的事件處理方法名,而真正的事件處理邏輯你可以通過C#或者VB.NET語言進(jìn)行實(shí)現(xiàn),我們是沒有辦法通過XAML來編寫相應(yīng)的事件處理邏輯的。假如你對asp.net技術(shù)比較了解的話,那么應(yīng)該對代碼后置這個概念不會生疏。對于一個WPF程序來說,我們也可以像ASP.NET那樣采用代碼后置模型,將頁面和相應(yīng)的邏輯代碼分別存放在不同的文件中,也可以以一種內(nèi)聯(lián)的方式將頁面和邏輯代碼都存放在同一個文件中。一般來說,我們是不推薦采用后面這種方式的,但是假如你要堅持這種實(shí)現(xiàn)方式亦無不可,但是最好是采用代碼后置的方式將呈現(xiàn)層和應(yīng)用程序邏輯層分離開來。

  下面我們通過一個具體的示例來講解WPF程序中代碼后置方式和內(nèi)聯(lián)方式的實(shí)現(xiàn)機(jī)制,在這個示例中依然是使用Button元素來說明這兩種方式的區(qū)別和實(shí)現(xiàn)過程。下面我們通過如下的XAML代碼來聲明一個Button元素:

35 <Button
36 OnClick="ButtonClickedHandler"
37 Name="MyButton"
38 Width="50"
39 Content="Click Me!" />
  而后我們在單擊這個Button按鈕時,將觸發(fā)相應(yīng)的事件,使得該按鈕的寬度和其顯示的內(nèi)容信息將發(fā)生改變。對應(yīng)的事件處理程序代碼如下:

40 void ButtonClickedHandler(object sender, RoutedEventArgs eventArgs)
41 {
42  MyButton.Width = 100;
43  MyButton.Content = "Thank you!";
44 }
  我們通過上面的程序清單可以看出,一旦點(diǎn)擊了該按鈕,就將使得按鈕的寬度從50延展到100,而其顯示的文本也由"Click Me!"變?yōu)?Thank you!"。同時也可以發(fā)現(xiàn)我們可以使用C#或者VB.NET自己對XAML元素的各個屬性進(jìn)行操作,這是因?yàn)樗蠿AML元素的屬性都是和WPF類的屬性戚戚相關(guān)的。為此,你不單單可以使用C#來改變Button的背景顏色、高度等屬性,甚至還可以像以前的Windows窗體程序那樣通過代碼來調(diào)整Button元素的位置坐標(biāo)。

  假如要以內(nèi)聯(lián)的方式進(jìn)行上述的實(shí)現(xiàn),我們可以為在XAML文件中使用<x:code>元素,并將所有的內(nèi)聯(lián)代碼都封裝在<![CDATA[...]]>標(biāo)簽中,以確保分析器不會對其中的代碼進(jìn)行解析。下面就是上述示例的內(nèi)聯(lián)實(shí)現(xiàn)方式的代碼:

01 <x:Code>
02 <![CDATA[
03 void ButtonClickedHandler(object sender, RoutedEventArgs eventArgs)
04 {
05  MyButton.Width = 100 ;
06  MyButton.Content = "Thank you! ";
07 }
08 ]]>
09 </x:Code> QQread.com 推出各大專業(yè)服務(wù)器評測 linux服務(wù)器的安全性能 SUN服務(wù)器 HP服務(wù)器 DELL服務(wù)器 IBM服務(wù)器 聯(lián)想服務(wù)器 浪潮服務(wù)器 曙光服務(wù)器 同方服務(wù)器 華碩服務(wù)器 寶德服務(wù)器
  XAML開發(fā)人員要注重的一點(diǎn)就是每次聲明一個XAML元素時,最好用Name屬性為該元素指定一個名稱,這樣應(yīng)用程序邏輯開發(fā)人員才可以通過代碼來訪問此元素。這是因?yàn)槟撤N類型的元素可能在XAML頁面上聲明多次,但是假如你不顯式地指明各個元素的Name屬性,那么我們是無法區(qū)分那個是我們想要操作的元素,也就無法通過C#或VB.NET來操作該元素和其中的屬性了。

  下面是聲明一個XAML元素必須遵循的四大原則:

  ·XAML是大小寫區(qū)分的,元素和屬性的名稱必須一個嚴(yán)格區(qū)分大小寫。例如對于Button元素來說,其在XAML中的聲明應(yīng)該為<Button>,而不是<button>。

  ·所有的屬性值,無論它是什么數(shù)據(jù)類型,都必須包含在雙引號中。

  ·所有的元素都必須封閉的,也就是說,一個元素必須是自我封閉的,<Button .../>,或者是有一個起始標(biāo)記和一個結(jié)束標(biāo)記,例如<Button>...</Button>。

  ·最終的XAML文件也必須是合適的XML文檔。

  聲明一個元素及其相應(yīng)屬性的基本格式如下:


<元素名 屬性名="值" 屬性名="值" ... />
  下面是一個簡單的用戶登陸窗口界面,其對應(yīng)的代碼見程序清單,我們來這驗(yàn)證選這段代碼是否遵循了上述的四大原則。請你仔細(xì)查看元素聲明的大小寫是否對應(yīng)、所有的屬性值是否都包含在雙引號中、所有的元素標(biāo)記是否是封閉的以及該XAML文件是否是一個組織良好的XML文檔。

01 <StackPanel
02 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/03 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
04 HorizontalAlignment="Left"
05 Margin="10">
06 <Label
07 Margin="5"
08 Content="Username" />
09 <TextBox
10 Margin="5"
11 BorderBrush="Blue"
12 BorderThickness="1"
13 Background="AliceBlue"
14 Foreground="Black"
15 Width="200"/>
16 <Label
17 Margin="5"
18 Content="Pass
Word" />
19 <PasswordBox
20 Margin="5"
21 BorderBrush="Blue"
22 BorderThickness="1"
23 Background="AliceBlue"
24 Foreground="Black"
25 Width="200" />
26 <Button
27 Margin="10"
28 Background="AliceBlue"
29 Foreground="Black"
30 Width="100"
31 Height="20"
32 Content="Submit" />
33 </StackPanel>
XAML開發(fā)入門之XAML核心語法

  為了增加XAML代碼的可讀性,本章中的所有XAML代碼都采用了如上述程序清單所示的格式化風(fēng)格,這樣就算是那些包含嵌套元素的復(fù)雜標(biāo)簽,我們也可以一目了然地知道其組織結(jié)構(gòu)。當(dāng)然上述的格式化風(fēng)格不是請求的,你可以將一個元素聲明代碼放在一行中,也可以將它分成多行進(jìn)行放置,一切都取決于你的喜好。因?yàn)閄AML在部署前是編譯為BAML文件的,所以那些多余的空格對編譯器的編譯過程沒有任何的影響,也就是說不會因?yàn)榭崭竦亩嗌俣绊懢幾g的性能。但是最好還是采用本章采用的格式化風(fēng)格,究竟清楚的代碼可讀性對于后續(xù)的維護(hù)和修改來說是非常重要的。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 陕西省| 阆中市| 苍溪县| 沧州市| 封丘县| 三穗县| 集贤县| 玉田县| 车险| 大庆市| 仁化县| 任丘市| 拉萨市| 兴城市| 靖边县| 高密市| 东宁县| 诏安县| 巴中市| 辉县市| 巴南区| 楚雄市| 岳池县| 威海市| 静安区| 正蓝旗| 哈巴河县| 犍为县| 巴彦淖尔市| 阳朔县| 西华县| 疏勒县| 鱼台县| 炎陵县| 连南| 鄂托克前旗| 恭城| 高安市| 邳州市| 赞皇县| 红河县|