原文:Windows Phone开发(4):框架和页

在开如之前,我想更正一个小问题,之前我在第一篇文章中说,Visual Studio Express for Windows Phone的中文版没有简体中文,那是因为我是在英文主页上下载的,语言选择列表中只有一个中文,但是繁体的,后来,我发现Windwos Phone SDK是有简体中文版的,顺便我也给出下载地址。
http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=0a373422-6680-46a7-89e1-e9a468a14259
可以在线安装,如果你的网速不给力的话,可以下载ISO镜像本地安装。
----------------------------------

上一篇文章中,我们了解了WP应用程序的生命周期和各个事件的触发情况,今天,我们一起来探讨一下框架和页面。
理论枯躁的东西就不讲了,MSDN上都有的,具体一点,我们随便新建一个WP应用程序项目,接着打开App.xaml.cs文件瞧瞧,看看里面有没有“新大陆”?

1、一个App类,从
Application派生,这跟Silverlight中是一样的,当然,如果你对Silerlight不熟悉也不要紧,我简单吹一下。
我想各位玩过C#的,不管怎么说也应该玩过Windows窗体应用程序吧,对,就是我们常说的WinForm项目,在WindowsForm项目里面,有一个Program.cs之类的文件,程序的入口点就在里面定义,在Main的最后,VS默认生成的代码中有这么一行:Application.Run(...);
所以,这个Application和那个Application的意义是一样,专门负责整个应用程序范围的各种事务的协调。
2、我们会注意到App里面有一个公共属性RootFrame,这就是主框架,一个WP应用程序只有一个主框架。
3、主框架下面是页,主框架中可以包含1个或N多个页面。
4、页面这个概念很好理解,就像我们平时看到的一个窗体,只不过在Silverlight里面叫页,所以,我们也可以联想起Web页面。在Android里面叫一个Activity,其实所指的东东是一样的,只是叫法不同罢了。下图所示为一个页。

好的,下面来看一下一个页面是如何构成的。
先来看看页面的XAML声明部分。
<phone:PhoneApplicationPage x:Class="phoneApp.MainPage"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">……………………
我们看到,每一个页面都是PhoneApplicationPage的子类,它是继承自Silverlight中的Page类。
因为程序是面向WP手机的,所以注意要使用PhoneApplicationPage而不是用Page类,这样可以避免出问题。Class属性就是我们这个页面类的类名。
有两个命名空间我们要注意一下的:
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d可以理解为是设计时的状态,d:DesignWidth="480"就是说这个宽度和高度只是在设计时有效,也就是我们在设计器中看到的大小,并不意味着真正运行起来是这个值,有可能会随着手机屏幕的不同而自动调整,所以我们不应该刻意地设置页面的宽度和高度,以免被固定了,不能自动调整。
mc是什么呢?从语义上翻译是,是标记兼容性相关的内容,其中我们看到一句:mc:Ignorable="d",正如上面所说,d:DesignWidth是设计时的,所以,Ignorable="d"就是告诉编译器在实际运行时,忽略设计时设置的值。
SupportedOrientations用于设置页面支持的方向,如果我们希望在手机屏幕被用户旋转后,程序能够自动跟着调整,就相应地修改该属性。
Orientation属性就是用来设置当前页面的默认方向,是纵向的还是横向的。
下面,一起来做个练习,把SupportedOrientations改为PortraitOrLandscape,再把Orientation改为除None以外的其它值,然后运行,把手机向不同方向旋转,看看怎么样?

这个大家多改改,多试几次就明白了,挺有意思的。
还有一个,shell:SystemTray.IsVisible="True"用于设置是否隐藏系统托盘,我们把它设置为True时,运行程序,把鼠标移到页面顶部点击一下,我们就会看到系统托盘了,如显示当前手机信号强度,电池剩余量等信息。

Windows Phone开发(4):框架和页相关推荐

  1. 学习Windows Mobile开发系列笔记(win32基本程序框架)

    一直对Windows Mobile开发很有兴趣.去年已经做过一个这方面的项目了,虽然自己看了很多资料,但是没有系统的学习过.现在应该还只是个入门者吧. 现在想系统的学习一番,我决定把Windows M ...

  2. php larval框架运行环境,4种Windows系统下Laravel框架的开发环境安装及部署方法详解...

    1.准备工作 1.1PHP集成环境 这里我们使用的是XAMPP,XAMPP是一个功能强大的建站集成软件包,采用一键安装的方式,包含PHP7.0.Mysql.Tomcat等.最新版下载地址:PHP 5. ...

  3. Windows Phone开发的十几篇文章(待续)

    Windows Phone开发(1):概论 http://www.1000phone.net/thread-7163-1-1.html Windows Phone开发(2):竖立自信,初试锋茫 htt ...

  4. Windows驱动开发书籍简介

    分享到 一键分享 QQ空间 新浪微博 百度搜藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 首页 我的主页 相册 广 ...

  5. 转:Windows驱动开发(中间层)

    Windows驱动开发(中间层) - 慧由心生 - 博客园Windows驱动开发一.前言依据<Windows内核安全与驱动开发>及MSDN等网络质料进行学习开发.二.初步环境1.下载安装W ...

  6. Windows Phone开发(48):不可或缺的本地数据库

    原文:Windows Phone开发(48):不可或缺的本地数据库 也许WP7的时候,是想着让云服务露两手,故似乎并不支持本地数据库,所有数据都上传上"云"数据库中.不过呢,在SD ...

  7. 微软一站式开发技术框架解决方案 年内展望

    微软一站式开发技术框架解决方案 (CodeFx) 自成立至今已有半年.在这半年里,我们完成了130个代码示例,主要覆盖了COM.数据访问.库加载.进程间通信.Office开发.WinForms等技术. ...

  8. Windows Phone开发(27):隔离存储A

    Windows Phone开发(27):隔离存储A 原文:Windows Phone开发(27):隔离存储A 在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将Iso ...

  9. CodeFx: 微软一站式开发技术框架解决方案 2009-7-30 新增sample code简介

    微软一站式开发技术框架解决方案 2009年7月30号更新: http://cfx.codeplex.com/Wiki/View.aspx?title=All-In-One%20Code%20Frame ...

最新文章

  1. HTML5 手机端动态适配
  2. PanDownload复活了!速度60MB/s!
  3. python闭包修改全局变量_python闭包探究一二
  4. 数值的加减会改变python中id,在python中调用Nan值并更改为数字
  5. Spring Bean 定义
  6. liberty配置mysql数据源_Bluemix Liberty server.xml MySQL数据源配置
  7. 逻辑回归(logistic regression)的本质——极大似然估计
  8. FPGA的一些细节(持续更新)
  9. Linux 进程内存掉电保存,Shell脚本可在Linux断电时停止应用程序
  10. 完美解决鼠标单击变双击问题^_^
  11. 《守望先锋》架构设计和网络同步
  12. 计算机显示无法打开打印机添加,win10电脑提示无法打开添加打印机怎么办
  13. 金蝶系统登不上服务器270,电脑进不了金蝶软件,显示Automation错误270
  14. python猫狗大战代码_猫狗大战
  15. 计算机组成原理——微程序实验
  16. 什么?你也被问到JVM了
  17. idea中各种标记文件夹的含义
  18. JS读取cookie(记住账号密码)
  19. gdal geometry java_GDAL Geometry对象操作 - 创建对象
  20. 学计算机的前后对比,2020计算机考研(408)大纲前后对比分析!

热门文章

  1. 开了gomod不识别gopath_笔记本电脑开不了机原因 笔记本电脑开不了机解决方法【图文】...
  2. python温度转换代码分析_Python温度转换实例分析
  3. c#如何wmf图片转换成png图片_每日一学:如何将png图片转换为jpg图片
  4. 提供呼叫中心服务器,呼叫中心系统方案
  5. python导入urllib request_Python 3.3 - urllib.request - 导入错误
  6. java gui 控制台_在GUI面板中创建Java控制台
  7. centos开放端口以及Telnet测试端口
  8. 容器技术之二.Docker的安装和常见问题
  9. mysql的本地id可以随便设置马_MySQL中的账号与权限管理
  10. 电脑鼠标自己乱跳乱点_无线鼠标VS有线鼠标,二者区别何在?你可知晓?不妨来了解一下...