Windows Phone开发(4):框架和页
在开如之前,我想更正一个小问题,之前我在第一篇文章中说,visual studio express for windows phone的中文版没有简体中文,那是因为我是在英文主页上下载的,语言选择列表中只有一个中文,但是繁体的,后来,我发现windwos phone sdk是有简体中文版的,顺便我也给出下载地址。
http://www.microsoft.com/downloads/zh-cn/details.x?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声明部分。
[html]
<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">
……………………
<phone:phoneapplicationpage
x:class="phoneapp.mainpage"
xmlns=""
xmlns:x=""
xmlns:phone="clr-namespace:microsoft.phone.controls;assembly=microsoft.phone"
xmlns:shell="clr-namespace:microsoft.phone.shell;assembly=microsoft.phone"
xmlns:d=""
xmlns:mc=""
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=""
xmlns:mc=""
d可以理解为是设计时的状态,d:designwidth="480"就是说这个宽度和高度只是在设计时有效,也就是我们在设计器中看到的大小,并不意味着真正运行起来是这个值,有可能会随着手机屏幕的不同而自动调整,所以我们不应该刻意地设置页面的宽度和高度,以免被固定了,不能自动调整。
mc是什么呢?从语义上翻译是,是标记兼容性相关的内容,其中我们看到一句:mc:ignorable="d",正如上面所说,d:designwidth是设计时的,所以,ignorable="d"就是告诉编译器在实际运行时,忽略设计时设置的值。
supportedorientations用于设置页面支持的方向,如果我们希望在手机屏幕被用户旋转后,程序能够自动跟着调整,就相应地修改该属性。
orientation属性就是用来设置当前页面的默认方向,是纵向的还是横向的。
下面,一起来做个练习,把supportedorientations改为portraitorlandscape,再把orientation改为除none以外的其它值,然后运行,把手机向不同方向旋转,看看怎么样?
这个大家多改改,多试几次就明白了,挺有意思的。
还有一个,shell:systemtray.isvisible="true"用于设置是否隐藏托盘,我们把它设置为true时,运行程序,把鼠标移到页面顶部点击一下,我们就会看到系统托盘了,如显示当前手机信号强度,电池剩余量等信息。
摘自 tcjiaan的专栏
上一篇: 本地系统服务例程:Nt和Zw系列函数
下一篇: 计算机算法与分析第一章学习心得
推荐阅读
-
windows phone开发之获取屏幕分辨率 和 系统版本
-
Windows Phone开发(4):框架和页
-
Windows Phone 7 框架和页面
-
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
-
Windows Phone 7 开发 31 日谈——第4日:设备方向
-
PHP和Java 集成开发详解分析 强强联合第1/4页
-
Windows Phone 7 开发探索笔记4——触控操作之XNA中的Gesture
-
Windows Phone开发之集合List和Foreach循环
-
Windows Phone 实用开发技巧(4):每隔一段时间屏幕截图一次
-
ABP开发框架前后端开发系列---(4)Web API调用类的封装和使用