原文 Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面

原文地址:  http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-19-Setting-up-the-RecordAudioxaml-Page

系列地址: http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners

源代码: http://aka.ms/absbeginnerdevwp8

PDF版本: http://aka.ms/absbeginnerdevwp8pdf

现在我们已经可以导航到新的RecordAudio.xaml页面,让我们把注意力放在该页的布局上。如果您回想一下用户界面的草图,我们设想了一个卷盘图像,它会进行旋转以指示应用程序正在录音。会有一个按钮启动录音,一个按钮进行回放。最后,会有一个应用程序栏负责保存声音并对声音命名。在本课中,我们将讨论页面的布局,声音录制功能和动画将在后续课程中进行讨论。

所以本简短课程的计划非常明确:

  1. 我们将通过绑定到本地资源对品牌进行更改。
  2. 我们将添加按钮和椭圆(ellipse),然后在椭圆上添加一些形状以使它看上去像一个老式的卷盘。
  3. 我们将添加一个应用程序栏,在前面课程中我们已经学会了这方面技能。

1. 执行简单的品牌更改

我将从修改应用程序顶部的文本开始:

  1. 我们将通过之前已经多次使用并已熟悉的语法从LocalResources.resx文件获取应用程序的名称。
  2. 目前我将文本属性硬编码为"record audio"。

这将产生以下结果:

2. 执行主控件的基本布局

我将在名称为ContentPanel的Grid中添加以 下XAML:

  1. 我们将使用StackPanel以垂直方式堆叠控件。
  2. 我们将使用ToggleButton(切换按钮),它有两个状态:选中和取消选中。我们的想法是希望能够打开和关闭录音。当ToggleButton切换状态时,我们希望能够处理引发开始或结束录音过程的事件。
  3. 我们将创建一个用于定位Ellipse的Grid。我们将设置Ellipse的颜色为内置的PhoneAccentBrush颜色,它指当前手机中设定的主磁贴的颜色。
  4. 我们将添加最后一个按钮,它用于播放最近录制的声音。

这将产生以下结果:

这里的Ellipse控件还不完整,我们希望它看上去像一个老式的盘式录音机。我们可以通过在XAML中使用几个较小的形状(一个位于中心的小椭圆以及与位于外部主椭圆的不同位置对齐的四个小矩形)完成这项工作。

上述大部分代码是自我解释的。我们使用一系列对齐和边距以在主椭圆上定位这些形状。

如果一切顺利,结果应如下所示:

3. 添加应用程序栏

我们将取消由文件模板提供的代码的注释以启用页面上的应用程序栏。在RecordAudio.xaml.cs文件中:

上述代码对您来说并非是新东西。我之前已经解释过其中大部分代码,但是具体到这个应用程序栏:

  1. 取消对BuildLocalizedApplicationBar()调用的注释。
  2. 取消BuildLocalizedApplicationBar()方法模板的注释 。
  3. 创建一个新的ApplicationBarIconButton,并设置其IconUri属性为save.png文件,设置其text属性为AppBarSave,它位于AppResources.resx文件中并在本系列前面被创建。
  4. 为Click事件创建并关联一个新的事件处理程序方法(见#7),当输入+=字符时,忽略建议的名称而使用自己命名的名称,然后使用悬停于蓝色虚线上的技术显示上下文菜单选项以生成一个方法存根。
  5. 向应用程序栏添加recordAudioAppBar按钮。
  6. 使应用程序栏可见。
  7. 这是您在步骤4中创建的事件处理程序存根。

运行应用程序并导航到该页面时将显示该应用程序栏,在它上面有一个标题为"save"的小磁盘图像。

回顾

综上所述,本课没有十分重要的内容,只是使用我们以前学过的技术来实现页面的特定布局。您见到的唯一新的控件是ToggleButton,它将可以被选中或取消选中而不是像按钮只能被点击/单击。

Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面的更多相关文章

  1. Windows Phone 8初学者开发—第13部分:设置LongListSelector中磁贴的样式

    原文 Windows Phone 8初学者开发—第13部分:设置LongListSelector中磁贴的样式 第13部分:设置LongListSelector中磁贴的样式 原文地址: http://c ...

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

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

  3. Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件

    原文 Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件 第21部分:永久保存Wav音频文件 原文地址:http://channel9.msdn.com/Series/Win ...

  4. Windows Phone 8初学者开发的翻译终于过半

    从2013年7月19日开始,到2013年12月9日,一共花了143天时间完成了18篇Windows Phone 8初学者开发的翻译,还剩下17篇文章需要翻译,看到了完成的希望! I love Wind ...

  5. Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据

    原文 Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据 第14部分:在运行时绑定到真实的数据 原文地址: http://channel9.msdn.com/Series/ ...

  6. Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据

    原文 Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据 第12部分:改进视图模型和示例数据 原文地址:http://channel9.msdn.com/Series/Win ...

  7. Windows Phone 8初学者开发—第11部分:设置SounBoard应用程序

    原文 Windows Phone 8初学者开发—第11部分:设置SounBoard应用程序 原文地址: http://channel9.msdn.com/Series/Windows-Phone-8- ...

  8. Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介

    原文 Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介 原文地址: http://channel9.msdn.com/Series/Windows-Ph ...

  9. Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述

    原文 Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述 第9部分:Windows Phone 8模拟器概述 原文地址: http://channel9.ms ...

随机推荐

  1. 读取IOS的相应路径

    //    IOS相应路径 NSString* bundlePath = [[NSBundle mainBundle] bundlePath]; NSLog(@"bundlePath = % ...

  2. DC游戏《斑鸠》原创赏析[转载]

    游戏背景:      凤来之国本来只是边远地区的一个小国.但现在他们却自称为得到“神之力”的“神通者”,在“选民思想”“和平统一”之类的名义下开始了对各地的武力侵略.      事情的起因是因为凤来之 ...

  3. C++ 100款开源界面库 (10)

    (声明:Alberl以后说到开源库,一般都是指著名的.或者不著名但维护至少3年以上的.那些把代码一扔就没下文的,Alberl不称之为开源库,只称为开源代码.这里并不是贬低,像Alberl前面那个系列的 ...

  4. HDU 2067 小兔的棋盘

    题解:卡特兰数的几何意义,所以答案就是卡特兰数的两倍 #include <cstdio> #include <iostream> using namespace std; #d ...

  5. Java ThreadLocal 学习

    同步机制是为了同步多个线程对相同资源的并发访问,是为了多个线程之间进行通信的有效方式. 而ThreadLocal是隔离多个线程的数据共享,从根本上就不在多个线程之间共享资源(变量),这样当然不需要对多 ...

  6. $.getJSON(url,function success(){})回调函数不起作用

    有个问题好久没有解决,就是: $.getJSON(url,function success(){}) 其中的回调函数,总也不执行. 以前也做过,但那都是CTRL+C,CTRL+V,也没有细想. 目标就 ...

  7. Sicily-1063

    一.题意 一个员工是另外一个员工的老板必须满足的条件是作为老板的员工的薪水salary必须大于这个员工,而且作为老板的员工的身高height要大于等于这个员工.首先按照薪水的多少从小到大进行排序,然后 ...

  8. webscraping documentation — webscraping documentation

    webscraping documentation - webscraping documentation webscraping documentation¶ Introduction Backgr ...

  9. artdialog的图片,标题,以及关闭按钮不显示的问题

    因其它css样式文件中包含“div{ overflow:hidden; }”引起的artdialog的图片,标题,以及关闭按钮不显示的问题: 如下图: 解决办法:在artdialog的样式文件顶部添加 ...

  10. css优先级及权重值

    优先级: 外部样式表 内部样式表(位于<head>标签内部 内联样式(在HTML元素内部)优先权最高 内联样式>内部样式=外部样式(看具体引入位置,解析的先后) 权重值: 第一等:内 ...