1. 程式人生 > >Windows Phone 開發學習筆記(五) Hello Windows Phone之虎頭蛇尾

Windows Phone 開發學習筆記(五) Hello Windows Phone之虎頭蛇尾

在上一篇中,只查了下

x:Class="HelloWindowsPhone.MainPage"

的解釋,初步瞭解了XAML和CS檔案之間的關係。而在MainPage.xaml中,還有很多行語句沒有分析

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" 
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True"

接下來就研究下這段程式碼,依然是依靠MSDN。

首先查詢xmlns的作用:

從文件中可以知道,xmlns這個屬性其實就是XML namespace的縮寫,用來指明當前XAML檔案的名稱空間,類似CS檔案中的using。每個XAML檔案的根元素必須宣告xmlns屬性。由於是開發Windows Phone應用,所以xmlns:phone和xmlns:shell裡的型別均與Microsoft.Phone有關。通過文件的解釋,前六行程式就基本理解了。接著看第7行語句。

mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"

從字面上就能看出,mc:Ignorable是用來設定忽略屬性的。它通知XAML處理器(例如之前提到的,main.cs中的Load函式)可以忽略哪些屬性。這條語句使得在設計時,頁面解析度被指定為768*480。而當XAML處理器讀入XAML檔案進行解析時,該解析度設定會被忽略。

而接下來的三行語句

FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}

設定字型,很容易理解,但是其中的“{}”有些門道,它是用來宣告標記擴充套件的。在設定頁面的屬性值時,有的只需賦給普通的字串,但有的則需賦給特殊的值(例如某種資源或已存在的物件),這時就需要標記擴充套件來實現。“{}”用來通知XAML檔案處理器,不要把裡面的內容按普通的字串進行處理,要按照標記擴充套件的規定來處理。StaticResource就是為屬性提供靜態資源的標記擴充套件。由於Windows Phone已經內建很多種樣式,在應用是可以很方便的呼叫,而且還可以自定義各種資源。

SupportedOrientations="Portrait" Orientation="Portrait"

這一行設定頁面方向。頁面預設只支援縱向顯示,如果想實現縱橫方向的自由顯示,可以在這裡更改。

而最後一行

shell:SystemTray.IsVisible="True"

則是設定程式在系統欄(也稱狀態列)的可見性。

至此,Hello Windows Phone中的MainPage全部分析完成,對Windows Phone中的Page也有些瞭解,但對整個應用的週期還是不太懂,需要繼續研究。