在用于Windows Phone的Microsoft Visual Studio2010Express中创建一个新的Windows Phone应用程序:


Hello Phone 项目包含以下项(Item):
Item | Description |
App.xaml / App.xaml.cs | 定义应用程序的入口点,初始化应用程序范围内的资源,,显示应用程序用户界面 |
MainPage.xaml / MainPage.xaml.cs | 定义应用程序中的程序页面(带有用户界面的页面) |
ApplicationIcon.png | 一种带有图标的图像文件,代表了手机应用程序列表中应用程序的图标 |
Background.png | 一种带有图标的图像文件,代表了在开始页面上应用程序的图表 |
SplashScreenImage.jpg | 这个图片会在应用程序第一次被启动时显示。启动画面会给用户一个即时的反馈,告诉用户应用程序正在启动直到成功跳转到应用程序的第一个页面。用户的启动画面可以和应用程序的一个页面设计的非常相似,这样能给使用这一个应用程序被快速加载的感觉。 |
Properties\AppManifest.xml | 一个生成应用程序包所必需的应用程序清单文件 |
Properties\AssemblyInfo.cs | 包含名称和版本的元数据,这些元数据将被嵌入到生成的程序集 |
Properties\WMAppManifest.xml | 一个包含与Windows Phone Silverlight应用程序相关的特定元数据的清单文件,且包含了用于Windows Phone的Silverlight所具有的特定功能 |
References folder | 一些库文件(集)的列表,为应用程序的工作提供功能和服务。 |
项目的基本档案结构
Propertys\WMAppmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.0">
<App xmlns="" ProductID="{feff9099-9381-47fc-a91c-f64afe941b60}" Title="InputScopeDemo" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="InputScopeDemo author" Description="Sample description" Publisher="InputScopeDemo">
<IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath>
<Capabilities>
<Capability Name="ID_CAP_GAMERSERVICES"/>
<Capability Name="ID_CAP_IDENTITY_DEVICE"/>
<Capability Name="ID_CAP_IDENTITY_USER"/>
<Capability Name="ID_CAP_LOCATION"/>
<Capability Name="ID_CAP_MEDIALIB"/>
<Capability Name="ID_CAP_MICROPHONE"/>
<Capability Name="ID_CAP_NETWORKING"/>
<Capability Name="ID_CAP_PHONEDIALER"/>
<Capability Name="ID_CAP_PUSH_NOTIFICATION"/>
<Capability Name="ID_CAP_SENSORS"/>
<Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
- ProductID:代表应用程序的 GUID 字符串
- Title:项目的默认名称,这里的文字也会显示在应用程序列表列表
- RuntimeType:设定应用程序是 Silverlight 或是 XNA 的类型
- Version:应用程序的版本编号
- Genre:当应用程序为 Silverlight 时会为 apps.normal,apps.game 则为 XNA
- Author:作者名称
- Description:应用程序的描述 (说明)
- Publisher:这个值预设会是项目的名称,当您的应用程序有使用到 Push 的相关功能,这个值是一定要有的
接下来是 <Capabilities> 相关的区块,在这个区块中则是描述了应用能够使用的功能性,例如能不能使用网络的功能或是存取媒体柜 (Media library) 的内容;在一般的情形下,我们是不需要去修改到这个部分的,假设当你移除了某些功能,例如说移除了 WebBrowser 的部分
<Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
那么当你在程序代码中有使用到 WebBrowser 相关的功能时,程序便会出错了,而 unhandle exception 在 Silverlight for Windows Phone 中是会直接关闭应用程序的,所以你看到的情形就会是『疑?我的程序怎么自动消失了』。
再往下看会看到Task的标签,一般来说会像是下面这样
<Tasks>
<DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/>
</Tasks>
这个是应用程序内部使用的,一般来说也不会去修改到,不过可以留意一下 NavigationPage 的部分,假设你的起始页面 (第一个显示的 Page) 名称不是 MainPage 的话,可以在这边做对应的修改。
再往下是 Token 的部分,例如下面
<Tokens>
<PrimaryToken TokenID="TestToken" TaskName="_default">
<TemplateType5>
<BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI>
<Count>0</Count>
<Title>Test</Title>
</TemplateType5>
</PrimaryToken>
</Tokens>
这边是设定当你的应用程序加到 Tile (也就是首页的地方) 之后相关的设定;要特别注意 TaskName 这个地方的设定是在Tile点下你的应用程序之后,会去启动应用程序的相关设定,跟上面提到 <Tasks> 中 Name 的属性是有相对应的关系的。
BackgroundImageURI 是当你的应用程序锚定到首页 (Pin to Start) 之后的背景图案,用下面这张图来看会比较清楚
而 <Count> 的标签是做甚么用途的呢?也直接来看一下图的效果,下面是 Count 设定为 0 跟 Count 设定为 5 时的分别
不过使用上较不会直接订死在配置文件中,这个部分陆续在系列中谈到 Push Notifications 的章节时会再谈到。
App.xaml
App.xaml 与 App.xaml.cs 这两个档案,预设包含了 Lifecycle (应用程序生命周期) 的相关事件处理,包含初次启动、失去焦点 (通常发生在使用者启动另外一个应用程序) 等等的相关处理;这部分在这系列中谈到生命周期的部分会再跟各位说明。而其中也可以去定义一些全局的资源 (resource) 或是全局的方法来使用,这部分就看您的应用程序如何去定义了。
MainPage.xaml
预设的起始页面档案
ApplicationIcon.png (63 * 63 pixels)
应用程序行表中使用的图形,如果没有指定则会缩小 Background 的图形作为列表的应用程序图形
Background.png (173 * 173 pixels)
- 作为 Tile (位于首页上应用程序的链接) 上的应用程序的背景图案,支持 jpg、png 文件格式
- 过大或是太小的图形将会被自动缩放
SplashScreenImage.jpg (480 * 800 pixels)
- 应用程序启动后,Mainpage.xaml 加载完成之前的等待画面
- 名称不能变动,编译选项必须为内容 (content)