查看: 1605|回复: 0

WP7开发实战第四章---WP7应用的工程框架原理

[复制链接]

该用户从未签到

发表于 2012-6-5 00:23:46 | 显示全部楼层 |阅读模式
分享到:
今天利用一点闲暇时间,和大家一起学习一下WP7应用的工程框架原理

对于一个应用程序而言,框架就好比一座楼房的主体,研究一个新平台,那么框架原理也是必须了解的

我们先来看一下标准WP 7程序的框架结构:

2012-6-4 22:21 上传
下载附件 (182.98 KB)
 




下面我们来学习一下对应文件的作用和用法:

1.Properties

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

 
       

  •         

  •         

  •         


复制代码

2012-6-4 22:22 上传
下载附件 (111.97 KB)
 



②动态脚本-AssemblyInfo.cs
    这个AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数,做过Winform 或者Asp.net肯定对这个不陌生,文件架构如下:
 
       
  • using System.Reflection;
            
  • using System.Runtime.CompilerServices;
            
  • using System.Runtime.InteropServices;
            
  • using System.Resources;
            

  •         
  • // 有关程序集的常规信息通过下列特性集
            
  • // 控制。更改这些特性值可修改
            
  • // 与程序集关联的信息。
            
  • [assembly: AssemblyTitle("Hello_Lumia900")]
            
  • [assembly: AssemblyDescription("")]
            
  • [assembly: AssemblyConfiguration("")]
            
  • [assembly: AssemblyCompany("Microsoft")]
            
  • [assembly: AssemblyProduct("Hello_Lumia900")]
            
  • [assembly: AssemblyCopyright("Copyright © Microsoft 2012")]
            
  • [assembly: AssemblyTrademark("")]
            
  • [assembly: AssemblyCulture("")]
            

  •         
  • // 将 ComVisible 设置为 false 会使此程序集中的类型
            
  • // COM 组件不可见。如果需要从 COM 访问此程序集中的某个类型,
            
  • // 则将该类型上的 ComVisible 特性设置为 true。
            
  • [assembly: ComVisible(false)]
            

  •         
  • // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
            
  • [assembly: Guid("851ef504-1237-4776-8abd-fb6ea0f4bc08")]
            

  •         
  • // 程序集的版本信息由下列四个值组成:
            
  • //
            
  • // 主版本
            
  • // 次版本
            
  • // 内部版本号
            
  • // 修订号
            
  • //
            
  • // 可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,
            
  • // 方法是按如下方式使用“*”:
            
  • [assembly: AssemblyVersion("1.0.0.0")]
            
  • [assembly: AssemblyFileVersion("1.0.0.0")]
            
  • [assembly: NeutralResourcesLanguageAttribute("zh-CN")]

复制代码

2012-6-4 22:22 上传
下载附件 (136.26 KB)
 



③神经中枢-WMAppManifest.xml
    WMAppManifest.xml文件类似于Android中的AndroidManifest.xml或iOS中的Info.plist文件,起到一个全局清单配置的作用。无论是在Windows Phone 7项目工程还是XAP文件中都可以找到WMAppManifest.xml。相对于其他两个平台来说最终打包到XAP文件的这个xml仍然是原始的没有做二进制或其他处理,但这对于执行的效率来说会有一些折扣。
     WMAppManifest.xml一般为utf-8编码,但也有utf-16的情况,它们都是为了国际化设计的。WMAppManifest.xml的架构如下:
 
       

  •         

  •         

  •         

  •         
  • ApplicationIcon.png
            

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         
  • Background.png
            
  • 0
            
  • Hello_Lumia900
            

  •         

  •         

  •         

  •         


复制代码
   从上面可以看出:
    每一个标准的WMAppManifest.xml文件根节点为Deployment,其中AppPlatformVersion属性为该应用设计的目标SDK版本,比如上面的为7.1代表是运行于至少在Windows Phone 7 Mango版本以上固件的。
    对于App中的众多属性,主要有ProductID为当前应用的GUID,Title为该应用的标题,Genre为类型一般为普通的应用或XBox游戏,Author为作者,Description简明描述和Publisher发布者构成。
    IconPath为该应用的图标,一般为根目录下的ApplicationIcon.png,当然也可以换为其他路径,或者以Resource的方式编译到dll中去。
    Capabilities节点中包含了该应用涉及的操作权限,Zune123提示这个类似于Symbian中的Capabilities能力或Android中的Persmission权限,默认工程会包含当前WP7 SDK中的所有权限,发布时需要取消无用的权限。
    Tasks中的NavigationPage为该应用的主入口页面XAML文件的位置,比如这里为默认的MainPage.xaml。
    Tokens中的子元素BackgroundImageURI一般保存着该应用的背景图片,比如默认的为Background.png,当然也可以编译到dll中去。
2012-6-4 22:22 上传
下载附件 (136.66 KB)
 


     整体来看Windows Phone 7的WMAppManifest.xml文件起到了全局配置作用,相对于Android SDK来说简单了很多,但是功能也少很多。


2.引用目录
   引用目录默认引用Windows Phone 开发框架DLL,还可以引入我们做好的类库文件等,增强项目的功能扩展,如下图所示:
2012-6-4 22:22 上传
下载附件 (180.87 KB)
 




3.App.xaml
   App.xaml文件主要是管理应用程序的生命周期,这个我们在第二章的时候开过专篇讲述,链接地址为▄︻┻═┳一,这里就不在详细叙述了
   相对于Android 的多任务生命周期,Windows Phone 7单任务的生命周期来得更简单些,不过看微软的意思明年可能发布带多任务的和复制/粘贴等功能的SDK,那就果断牛B了。暂时的单任务只能在这个生命周期处理文件中处理了,比如应用的切换我们可以在生命周期里面及时的保存一些必要的数据,不致于丢失。


4.图片资源
2012-6-4 22:23 上传
下载附件 (183.88 KB)
 



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

Background.png
这个图片是应用程序的背景图

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


5.MainPage.xaml
   MainPage.xaml为程序的入口主页,这里微软还为我们添加了可视化设计器,很贴心,赞一个!

   MainPage.xaml的架构如下:

       

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         

  •         


复制代码
2012-6-4 22:23 上传
下载附件 (186.07 KB)
 


     MainPage.xaml其实是一个标准的XML文件,也是应用程序的UI文件,而这里我们要着重了解的是XAML的属性

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






上面呢,就是一个标准WP7程序的工程框架加工了,乍一看,是不是有点蒙呢?任何事情都是从无到有的过程,慢慢来呗!

人,若只做有把握的事情,又如何见识未知的能量?


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条



手机版|小黑屋|与非网

GMT+8, 2024-12-26 21:15 , Processed in 0.125929 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.