我们已经学习了XAML布局和事件基础,接下来让我们做些有趣的事情,我们将通过给应用程序添加样式来赋予它一些独特的特征,显然我们需要按照微软的向导以便我们能让我们的应用看起来像Windows Phone 8生态系统的一部分,但是我们任然有许多自由在个性化应用程序上面。

 
我们这节课的计划:
1、我们将改变应用在手机应用列表和首页的icon图标;
2、我们将访问用户手机的主题颜色并应用在应用程序中,同时我们也将学习到一些重要的XAML语法——绑定;
3、最后我们将讨论关于样式重用。
 
一、改变ICON
这节课的第一个任务是改变应用程序图标,我们将在按字母顺序的应用程序列表和开始页面看到他如果我们Pin了我们的应用图标到首页,首先我们展开我们项目中Properties文件夹节点:

我们已经学习了XAML布局和事件基础,接下来让我们做些有趣的事情,我们将通过给应用程序添加样式来赋予它一些独特的特征,显然我们需要按照微软的向导以便我们能让我们的应用看起来像Windows Phone 8生态系统的一部分,但是我们任然有许多自由在个性化应用程序上面。

 
我们这节课的计划:
1、我们将改变应用在手机应用列表和首页的icon图标;
2、我们将访问用户手机的主题颜色并应用在应用程序中,同时我们也将学习到一些重要的XAML语法——绑定;
3、最后我们将讨论关于样式重用。
 
一、改变ICON
这节课的第一个任务是改变应用程序图标,我们将在按字母顺序的应用程序列表和开始页面看到他如果我们Pin了我们的应用图标到首页,首先我们展开我们项目中Properties文件夹节点:
当你双击打开这个文件的时候你可以看到一个特别的窗口,这个窗口提供了很多选项来影响我们的应用程序,例如在第一个选项卡“应用程序界面”我们能改变应用的默认名字和应用图标等:
 
我们使用一个更适合这个应用的图标来改变它的默认图标,我已经创建了这个图标在C9Phone8\PetSounds_Assets文件夹下面。
在文件夹中是Application.png
我们拖拽这个图标到我们项目的Assets文件夹,我们将会看到一个提示一个同名的文件已经存在:
我们用新图标替换旧图标
接下来我们将替换在Assets\Tiles文件夹中的两个子文件,我已经看到了这个目标在解决方案窗口中。
在windows窗口中是在C9Phone8\PetSounds_Assets\Tiles文件夹中:
 
 
我们同样拖拽他们到目标文件夹中,同样你会看到刚刚的提示窗口。
 
1、勾选应用所有项目
2、点击确定
现在我已经替换了这些主要的磁贴文件,让我们回到WMAppMainfest.xaml文件,因为我们使用新文件替换了就文件所以我们需要重新打开这个文件来看我们的新文件。
 
继续往下翻这个设置文件,我们确定下面的选项:
 
1、图块模版选择TemplateIconic
2、选择支持大磁贴
3、小图标已经设置
4、中等图标已经设置
为了测试这些设置,我们(或者按F5)运行这个应用,在模拟器中我们点击手机的开始按钮,然后(按住鼠标)从右向左滑动在字母顺序列表中找到我们的PetSounds应用.
 
我们点击并按住这个图标知道弹出一个包含固定到开始屏幕和卸载的菜单。
点击固定到开始菜单,点击模拟器的Home键我们将看到:
 
 
这是一个很小的细节,我们通过设置一点点改变就可以看到它基本上符合我们的应用。
 
二、修改应用和页面标题
 
接下来我们将改变应用和页面的标题,在MainPage.xaml定位到TitlePanel,这个StackPanel通过页面的默认模版添加了默认的标题:
我们将作如下改变:
 
1、使用应用标题“PET SOUNDS”改变应用标题Text属性,我们全部使用大写(caps)因为它是Windows Phone应用的常用手法。
2、使animals替代页面标题,我们全部使用小写因为他也是常用的。
结果显示:
 
仅仅使用了一点点样式就更看起来像一个应用。
 
三、理解绑定语法和静态资源
 
textbox的Style属性是默认设置成
Style="{StaticResource PhoneTextTitle1Style}"
 
我们将花点时间解释,首先你随时可以在XAML中看到大括号,他们就是绑定语法,有两种类型的绑定语法:
1、{StaticResource }让我们从里面的resource开始,一个资源是一个在应用程序中能重用的对象,例如brush和style
我们创建一个我能想到的一个最简单的关于{StaticResource }的项目XAMLResources。
 
1、添加一个在<phone:PhoneApplicationPage>下面的子元素,任何brush和style只能用于这个页面不能用于其它页面。
2、我创建了一个SolidColorBrush并且我能通过键值MyBrush引用他。
3、我创建了一个Style我能通过键MyButtonBackground来引用,注意我们设置了TargetType=Button,意思是这个Style只能用于Button,在这个style中我能设置button独有的属性,我设置了Background=Blue。
4、创建Button并将Background属性绑定到MyBrush
5、创建Button的Style属性绑定到MyButtonBackground。
 
在这个简单的应用中你可能还不能发现这样写的价值,但是当你的应用程序特别大的时候你想保持页面上的所有控件有一个统一的外观你就可以发现了。它保持XAML简单和紧凑,当你想改变Style的时候你会发现在所有应用了这个style的地方都会改变。
这是结果:
 
我们在页面中创建了本地资源,意思是我们只能在这个页面中使用这个资源,但是我们怎样才能在整个程序中使用呢?在下面的例子中,我将在App.xaml文件的<Application.Resources> 位置定义主题作为一个系统资源。
 
 
四、探索主题资源
现在让我们回到PetSounds项目,你可能想知道PhoneTextTitle1Style样式在哪里定义的,的确他是一种内嵌的样式,作为Windows Phone操作系统主题资源的一部分。
 
如果你往下滚动这个页面你将看到可用于Windows Phone应用的样式。
 
 
这些主题应该被利用到windows PHone应用程序中,你应该尽量避免使用自定义的颜色字体等样式除非你有一个好的理由,(例如你公司的品牌元素)。
 
值得注意的是有很多样式是继承其他样式的。这种可视化的继承是允许开发者避免重复创建一些公用的属性,这看起来很像css在web开发中。
 
我开始说过有两种绑定方式,第二种是{Binding }它用于页面元素绑定数据(即通常一些自定义类型的数据列表),我们将在后面的课程中看到。
 
五、自定义主题资源通过创建一个继承样式
 
现在让我们做些有趣的事情,按照我前面说的,你一般应该坚持使用Windows Phone的主题资源,但是我们也能自己创建一个我们想要的样式,我认为这样能提供一个或多个视觉。
确保鼠标的光标是在一个Text设置为animals的TextBlock上。
在属性窗口导航到杂项区域,并且找到Style属性。
 
注意你将看到style后面的textbox周围是绿色的并且后面的图标也是绿色的,如果你点击右边的小正方形,你将会看到下面的菜单:
 
在这里我们能改变绑定,实际,我将选择“转换到本地值”,当我们这样做了后,你会发现style属性值不见了取而代之的是用一个定义在<style>的复杂属性设置<TextBlock.Style>的值。
 
正如你看到的我们能将系统主题样式转换成本地样式,我盟能看到在主题样式中的定义,它是基于PhoneTextBlockBase主题样式,并且通过设置两个额外的属性FontFamily和FontSize重写了继承样式,使用这两个定义我们重写样式:
 
1、设置FontFamily为Verdana
2、设置FontSize为64
 
这效果如下:
接下来我们将这个样式成为一个全局可用的系统资源,我将<TextBlock.Style>和</TextBlock.Style>之间的代码剪切。
 
然后打开App.xaml文件
粘贴在<Application.Resources>区域(12到19行)我们也添加一个属性x:Name="MyTitleText":
 
现在我能返回到MainPage.xaml文件并且用新的应用程序资源重写TextBlock:
最后这效果应该是不会改变的:
成功。
 
回顾
快速回顾下,这节课我们最大的收获就是学习了如何给我们的应用添加样式,让他看起来更像Windows Phone应用但是我们也能表达我们自己的个性。我们学习了如何修改WMAppMainfest.xml文件来修改我们应用的图标和标题。我们改变了应用的标题和页面的标题,学习了如何像Windows Phone的主题资源样绑定静态资源,以及如何创建基于主题资源的本地和系统资源等等。
 
 
 
 

菜鸟学Windows Phone 8开发(4)——设置应用程序样式的更多相关文章

  1. 菜鸟学Windows Phone 8开发(1)——创建第一个应用程序

    本系列文章来源MSDN的 面向完全新手的 Windows Phone 8 开发 主要是想通过翻译本系列文章来巩固下基础知识顺带学习下英语和练习下自己的毅力(因为打算每天翻译一篇,但是发现翻译这篇花费了 ...

  2. 菜鸟学Windows Phone 8开发(3)——布局和事件基础

    本系列文章来源MSDN的 面向完全新手的 Windows Phone 8 开发  本文地址:http://channel9.msdn.com/Series/Windows-Phone-8-Develo ...

  3. 菜鸟学Windows Phone 8开发(2)——了解XAML

    本系列文章来源MSDN的 面向完全新手的 Windows Phone 8 开发 主要是想通过翻译本系列文章来巩固下基础知识顺带学习下英语和练习下自己的毅力 本文地址:http://channel9.m ...

  4. 芯灵思Sinlinx A64开发板设置qt程序自启动

    开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 开发板详细参数 https://m.tb.cn/h.3wMaSKm 对于开发板开机启动程序的设置可以这样做通过串口连接开发板 v ...

  5. 跟着学!教你开发第一个Java程序

    今天我们的目标是开发人生中的第一个Java程序,虽然可能会很简单,但是这小小的一步却是跨入IT行业的一大步!下面我们来一起来仔细的了解开发的流程. 准备工作 1,作为一名准程序猿自备一台电脑那是必不可 ...

  6. Windows Phone 8初学者开发—第6部分:设置应用程序的样式

    原文 Windows Phone 8初学者开发—第6部分:设置应用程序的样式 Source Code: http://aka.ms/absbeginnerdevwp8  PDF Version: ht ...

  7. python开发环境设置(windows)

    python开发环境设置(windows) 1)  python2.7.3安装 在www.python.org上下载python-2.7.6.amd64.msi软件.安装完毕后设置path路径.控制面 ...

  8. 2-5 Flutter开发环境与Android开发环境设置详解(Windows)

    第二个是国内服务器的网址 andoid stuido的一些使用的说明文档 https://developer.android.google.cn/studio/intro 安装Flutter Dart ...

  9. Eclipse+Qt开发环境设置(Linux和Win)

    文章摘要: Windows,Linux平台下安装使用Eclipse + QT4.4.3开发环境 Windows,Linux新建project时的配置(不使用QT预置项目类型,而是手工配置) 使用Ecl ...

随机推荐

  1. SAFS Init Files

    There're many deployment files for configuration. We need to learn how SAFS read these depolyment fi ...

  2. time

    http://blog.csdn.net/JGood/archive/2010/04/07/5457284.aspx    Python提供了多个内置模块用于操作日期时间,像calendar,time ...

  3. python ide: pycharm

    1, 设置python路径 2,运行py文件 https://www.jetbrains.com/help/pycharm/2016.1/creating-and-running-your-first ...

  4. 搭建自己的OpenWrt开发环境

    1.  安装环境Linux系统,如果在CentOS上操作,需安装如下依赖包:yum install binutils bzip2 gawk gcc gcc-c++ gettext makencurse ...

  5. 关于ScrollerView的一些小心得

    在项目开发时遇到一个问题,我在UIViewController上面直接创建了一个UIScrollerView,把UIScrollerView作为一个子视图添加到了UIViewController, 又 ...

  6. JSP 处理汉字信息

    request 对象获取客户端提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊处理.将获取的字符串用 ISO-8859-1 进行编码,并将编码存放到一个字节数组中,再将这个数组转 ...

  7. MongoDB副本集配置系列十:MongoDB local库详解和数据同步原理

    1:local库是MongoDB的系统库,记录着时间戳和索引和复制集等信息 gechongrepl:PRIMARY> use local switched to db local gechong ...

  8. C++ 代码换行

    1.字符串太长,换行显示,怎么办?2.使用反斜杠,如下: string str = "abcd\ 1234"; 注意:反斜杠后面不准有任何字符.下一行开头的制表符不包含在整个字符串 ...

  9. 【jquery】Validform,一款不错的 jquery 表单验证插件

    关于 Validform 这是一款很不错的 jquery 表单验证插件,它几乎能够满足任何验证需求,仅仅一行代码就能搞定整站的表单验证. $('form').Validform(); 为什么能如此方便 ...

  10. 我常用的Mac快捷键

    1. 最小化当前窗口 command m 2. 在不同应用间切换 command tab 3. 在同一应用的不同窗口间切换 command ` 4. 在浏览器同一窗口的不同标签间切换 ctrl tab ...