WindowsPhone笔记(1)Hello,WindowsPhone!关于WindowsPhoneWindowsPhone是微软在于2010年10发布的一款手机操作系统,同时将谷歌的Android和苹果的IOS作为主要竞争对手。2011年2月与诺基亚达成全球战略同盟并深度合作共同研发,建立其庞大的生态系统。WindowsPhone7系统采用了全新的架构,所以并不兼容以往WindowsMobile系统的应用程序,这也是由于WM系统的历史包袱过于沉重的原因。移动终端将来不仅仅只是作为一个通讯工具,而去也会变成强大的云计算终端之一。WindowsPhone使用的独特的Metro设计风格,为用户带来了全新的体验,同时将XBOXLIVE服务整合到WindowsPhone中,游戏应用也将会是WindowsPhone的一个亮点,微软也将随着微软不予余力的推广和诺基亚等各大手机厂商的加入,可以预见,WindowsPhone能够在将来的智能手机操作系统的市场上占有重要的位置,同时WindowsPhone在中国尚处于初始阶段,对于广大开发者而言是一个很好的切入点,前瞻性的投入WindowsPhone开发的学习,也是一次很好的个人投资。1.系统架构作为开发者,我们首先从WindowsPhone的开发架构入手,下面是WindowsPhone的系统结构图:从图中可以WindowsPhone的应用开发支持Silverlight和XNA这两个平台。Silverlight框架通常用于开发应用程序和工具和一些简单的小游戏,XNA框架主要用来编写高性能的游戏,包括2D和3D,前面也介绍过,游戏开发将是WindowsPhone开发中的一个亮点。同时云服务和WindowsAzure也是WindowsPhone开发中的重要组成部分。同时于微软以往的手机操作系统不同,WindowsPhone已经对手机硬件规格做了严格的规定,保持了应用程序开发和WindowsPhone体验的一致性。2.开放环境的安装WindowsPhone的软件开发工具包(WindowsPhone7.0和WindowsPhone7.5设备开发应用程序和游戏所需的全部工具&SDK)是完全免费的但是只支持在WindowsVista和Windows7中安装。具体安装过程比较简单,直接从MSDN下载按照提示安装即可(如果你已经安装了VisualStudio2010,请先将VisualStudio2010升级到SP1版本才能继续安装WindowsPhoneSDK),使用Email注册一个WindowsLive账户即可免费使用。3.第一个WindowsPhone示例程序好了废话不多说了,那么我们来开始我们的第一个WindowsPhone应用,HelloWindowsPhone!打开VS,新建项目,在已安装的模板中选择C#,然后选择SilverlightforWindowsPhone,在右侧选择WindowsPhone应用程序,选择路径,输入项目名称HelloWindownsPhone。点击确定,OK,项目创建完成。让我们来看看创建好的项目结构:首先我们先看Properties(属性)文件夹下3个文件,在我们这个示例中并不需要理会这些文件,但是在实际开发一个应用时,这些文件就显得非常重要了。先打开WMAppManifest.xml文件:1?xmlversion=1.0encoding=utf-8?2Deploymentxmlns==7.13Appxmlns=ProductID={1de7cc9f-9cf1-41ec-a309-7488dd2b4d3c}Title=HelloWindowsPhoneRuntimeType=SilverlightVersion=1.0.0.0Genre=apps.normalAuthor=HelloWindowsPhoneauthorDescription=SampledescriptionPublisher=HelloWindowsPhone4IconPathIsRelative=trueIsResource=falseApplicationIcon.png/IconPath5Capabilities6CapabilityName=ID_CAP_GAMERSERVICES/7CapabilityName=ID_CAP_IDENTITY_DEVICE/8CapabilityName=ID_CAP_IDENTITY_USER/9CapabilityName=ID_CAP_LOCATION/10CapabilityName=ID_CAP_MEDIALIB/11CapabilityName=ID_CAP_MICROPHONE/12CapabilityName=ID_CAP_NETWORKING/13CapabilityName=ID_CAP_PHONEDIALER/14CapabilityName=ID_CAP_PUSH_NOTIFICATION/15CapabilityName=ID_CAP_SENSORS/16CapabilityName=ID_CAP_WEBBROWSERCOMPONENT/17CapabilityName=ID_CAP_ISV_CAMERA/18CapabilityName=ID_CAP_CONTACTS/19CapabilityName=ID_CAP_APPOINTMENTS/20/Capabilities21Tasks22DefaultTaskName=_defaultNavigationPage=MainPage.xaml/23/Tasks24Tokens25PrimaryTokenTokenID=HelloWindowsPhoneTokenTaskName=_default26TemplateType527BackgroundImageURIIsRelative=trueIsResource=falseBackground.png/BackgroundImageURI28Count0/Count29TitleHelloWindowsPhone/Title30/TemplateType531/PrimaryToken32/Tokens33/App34/Deployment复制代码TitleHelloWindowsPhone/Title标签中的名称是向用户显示已经安装的应用程序列表中的程序名称ApplicationIcon.Png和Background.png是在手机应用程序列表中显示的图标,可以自由替换这些图标,但是不能够改变图标的文件名称。SplashScreenImage.jpg文件是程序启动时显示的图片。继续查看项目的文档结构,我们发现两对最重要的文件App.xaml和App.xaml.cs以及MainPage.xaml和MainPage.xaml.cs,有个Silverlight和WPF开发经验的开发者知道XAML中文名称为可扩展应用程序标记语言是微软为应用程序用户界面而创建的一种新的描述性语言,基于XML。App.xaml.cs和MainPage.xaml.cs从文件的命名上我们可以看出这两个C#代码文件时于这两个XAML文件相关的“代码隐藏文件,有过.NET开发经验的开发者对这种结构应该不会陌生。下面简单介绍这几个文件的作用:App.xaml通常用来存储整个应用程序所使用的资源,这些资源包括配色方案、渐变画刷、样式等等。App.xaml和App.xaml.cs文件实际上定义了同一个App类的两个部分,当程序运行时,App类创建一个类型为PhoneApplicationFrame的对象并将该对象设置为自身的RootVisual属性,该框架(frame)的宽度为480像素,高为800像素,占据了整个手机界面PhoneApplicationFrame对象类似于网游浏览器,用来导航到MainPage对象。MainPage类是我们编写程序的主战场,该类定义于MainPage.xaml和MainPage.xaml.cs文件中。接下来,为了更直观的了解WindowsPhone开发我们修改MainPage.maml文件在文件中增加一个TextBlock元素,显示“Hello,WindowsPhone”文本,修改如下:1phone:PhoneApplicationPage2x:Class=HelloWindowsPhone.MainPage3xmlns=:x=:phone=clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone6xmlns:shell=clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone7xmlns:d=:mc=:Ignorable=dd:DesignWidth=480d:DesignHeight=76810FontFamily={StaticResourcePhoneFontFamilyNormal}11FontSize={StaticResourcePhoneFontSizeNormal}12Foreground={StaticResourcePhoneForegroundBrush}13SupportedOrientations=PortraitOrientation=Portrait14shell:SystemTray.IsVisible=True1516!--LayoutRoot是包含所有页面内容的根网格--17Gridx:Name=LayoutRootBackground=Transparent18Grid.RowDefinitions19RowDefinitionHeight=Auto/20RowDefinitionHeight=*/21/Grid.RowDefinitions2223!--TitlePanel包含应用程序的名称和页标题--24StackPanelx:Name=TitlePanelGrid.Row=0Margin=12,17,0,2825TextBlockx:Name=ApplicationTitleText=HelloWindowsPhoneStyle={StaticResourcePhoneTextNormalStyle}/26TextBlockx:Name=PageTitleText=MainPageMargin=9,-7,0,0Style={StaticResourcePhoneTextTitle1Style}/27/StackPanel2829!--ContentPanel-在此处放置其他内容--30Gridx:Name=ContentPanelGrid.Row=1Margin=12,0,12,031TextBlockFontSize=36Text=HelloWindowsPhone!VerticalAlignment=CenterHorizo