在上一篇中,只查了下
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的作用:
http://msdn.microsoft.com/zh-cn/library/ms752059.aspx#xaml_root_elements_and_xaml_namespaces
从文档中可以知道,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也有些了解,但对整个应用的周期还是不太懂,需要继续研究。