博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Windows Phone 7 不温不火学习之《工程结构》

Posted on 2011-03-05 19:28  星尘的天空  阅读(384)  评论(0编辑  收藏  举报

转载地址:Windows Phone 7 不温不火学习之《工程结构》

像学习Android 一样也必须先把Windows Phone 7的工程结构了解清楚才好,Windows Phone 7的项目结构以一个最标准的WP7应用为例,截图如下:

1.Properties

AppManifest.xml
翻译成中文为应用列表,当我们的WP应用开发完成后,会打包并发布,而此文件的作用是把我们需要布署和发布的所有文件列表列出来,这个跟Android 的Manifest 是不大相同的,Android 的manifest 虽然也可以理解成列表,但Andriod 必须自己手动添加需要的应用权限、服务、广播等。而这个文件最好是不要动它为好。文件内容如下:

AssemblyInfo.cs
做过Winform 或者 Asp.net 肯定对这个不陌生,这里不做过多介绍。

WMAppManifest.xml
看名称,好像是跟Windows Mobile 有一点关系 ,此文件包含了Windows Phone 7 的一些特殊属性,可以定义它的可用能力,让它支持比如游戏服务、本地化、网络链接、浏览器等功能,还可以定义应用程序的图片等。内容列表如下所示:

<?xml version="1.0" encoding="utf-8"?>

<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.0">
  <App xmlns="" ProductID="{d26a6ded-dcde-4540-9240-a391feb84ee2}"
       Title="WindowsPhoneApplication1" RuntimeType="Silverlight"
       Version="1.0.0.0"
       Genre="apps.normal"  //设置应用程序是否放到真实设备的游戏列表区域

       Author="WindowsPhoneApplication1 author"
       Description="Sample description"
       Publisher="WindowsPhoneApplication1">
    <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"/>
    </Capabilities>
    <Tasks>
      <DefaultTask  Name ="_default" NavigationPage="MainPage.xaml"/>//设置应用程序默认的起始页面
    </Tasks>
    <Tokens>
      <PrimaryToken TokenID="WindowsPhoneApplication1Token" TaskName="_default">
        <TemplateType5>
          <BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI>//应用程序的背景
          <Count>0</Count>
          <Title>WindowsPhoneApplication1</Title>
        </TemplateType5>
      </PrimaryToken>
    </Tokens>
  </App>
</Deployment>

Tip:此文件不要改动。 其中Tasks是设置应用启动的第一个页面,跟Android 的?manifest?Launcher 差不多。

2.References
此文件为引用目录,默认引用Windows Phone 开发框架DLL,还可以引入我们做好的类库文件等,增强项目的功能扩展。

图片文件

ApplicationIcon.png
这个图片是主页面列表需要的图标,

Background.png
这个图片是应用程序的背景图,默认如下:


SplashScreenImage.jpg
这个图片是程序第一次启动前启动显示的

4.App.xaml
这个文件主要是管理应用程序的生命周期,内容如下:

<Application
    x:Class="WindowsPhoneApplication1.App"
    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">
    <!--Application Resources-->
    <Application.Resources></Application.Resources>

    <Application.ApplicationLifetimeObjects>
        <!--Required object that handles lifetime events for the application-->
        <shell:PhoneApplicationService
            Launching="Application_Launching" Closing="Application_Closing"
            Activated="Application_Activated" Deactivated="Application_Deactivated"/>      
    </Application.ApplicationLifetimeObjects>

</Application>


 相对于Android 的多任务生命周期,Windows Phone 7单任务的生命来得更简单些,不过看园子里面有牛人己经看出微软明年可能发布带多任务的和复制/粘贴等功能的版本,很给力呀。呵呵。暂时的单任务只能在这个生命周期处理文件中处理了,比如应用的切换我们可以在生命周期里面及时的保存一些必要的数据,不致于丢失。

  • xmlns 默认的空间,如果在UI里面控件没有前缀则代表它属于默认的名字空间。例如,mainPages 里面的Grid? 标签。
     
  • xmlns:x代表专属的名字空间,比如一个控件里面有一个属性叫name? 那么 x:name 则代表这个name 代表xaml的名字空间。
     
  • xmlns:phone 包含在Miscroft.phone? 的引用DLL
     
  • xmlns:shell 包含在Miscroft.sell的引用DLL,此文件可以帮助我们管理就用的生命周期。
     
  • xmlns:d 呈现一些设计时的数据,而应用真正运行起来时会帮我们忽略掉这些运行时的数据,比如下文件的d:DesignWidth="480" d:DesignHeight="768"然后在如下的名字空间会忽略掉这些数据。
     
  • xmlns:mc 布局的兼容性,这里主要配合xmlns:d 使用,它包含Ignorable属性,可以在运行时忽略掉这些设计时的数据。
     

  • 上面的所有即是一个标准的WP 7 的工程结构,慢慢来吧,从无到有的过程。

    希望大家能够帮帮忙,投下票,最近参加了51cto的博客竞赛,大家没事的可以投下票,谢谢==