在Windows Phone 7 (Nodo)之前的版本中,我们要在应用程序显示消息提醒,或者是进度提示,通常的做法在页面的顶部放置一个专门的容器(如一个Grid),里面放置一些文本和PerformanceProgressBar。 在Mango中,我们多了一种选择,就是可以在SystemTray中显示文本和进度条。如下图,SystemTray即显示系统信息的状态栏,有当前的信号,电量,时间等等。

Jeff 写过一篇利用SystemTray的文章,本文是在其基础上做了一些延伸。我会以两个Demo来演示SystemTray的使用方法

Demo1 :
页面中含有两个按钮,分别为上一条与下一条,点击下一条会显示下一条信息,点击上一条会显示上一条信息,最终的效果图如下: 

像Jeff在他得博客中提到的一样,我们需要创建一个用于显示SystemTray的类,在RootFrame实例化时实例化这个类(在App.xaml.cs中大约120行)。然后提供一个单例的实例给外界

再来看下实例是怎么“劫持”RootFrame的: 在初始化方法中,我们会实例化一个ProgressIndicator,它是用来在SystemTray上显示文本和进度的。然后注册一个页面导航的事件,如果当前页面不是为空,则将系统栏显示设置为True,并且设置其前景色、背景色和透明度。而在其构造函数中,实例化一个数组,这个数组是用于显示的广告的内容:

当然我们需要提供一个接口,以便我们在页面的Code Behind中可以控制当前显示的内容:

这里提供的是当前数组的索引。我们在代码中将索引++或者--,会更改当前 ProgressIndicator的文本。然后我们来看看页面中是怎么控制的

可以看到页面中放置了两个Button,而这两个Button分别有相应的点击事件:

同时注意到,Button的可用性是绑定属性的,数据源已经在页面构造函数中设置,下面在来看看Converter是如何写的:

上述代码是“上一条”按钮对应的Converter,即当前索引小于等于0时,按钮就不可用,同理“下一条”按钮的可用性也是这样设置的。、

Demo2:

我们在页面中放置一个ToggleButton,即可以响应开关点击的按钮,如下图:

实现的功能:点击开启广告后,系统每隔2秒会显示一条广告内容,点击关闭广告后,系统栏自动隐藏

我们在Windows Phone 中通常使用DispatcherTimer 去实现每隔几秒执行某个动作的功能。

同Demo1一样,我们在GlobalLoading中需要提供一个接口来控制是否显示广告:

这里我提供一个Bool值的属性给外部,如果设置为True,则会启动Timer去做Something,如果设置为false,则会停止Timer。细心的朋友可以注意到,这里我回将 ProgressIndicator的可见性设置为同当前是否播放广告。下面来看看具体的Timer是怎么做的:

Timer中会设置一个当前的索引,每2秒执行玩一次后,会自加,当遍历玩数组后,会重新置为0。下面的代码是外部如果调用的,十分简单:

源代码下载:

转载于:https://www.cnblogs.com/alexis/archive/2011/08/20/2147090.html

Windows Phone 实用开发技巧(18):使用SystemTray显示全局消息提醒相关推荐

  1. Windows Phone 实用开发技巧(10):Windows Phone 中处理图片的技巧

    在开发Windows Phone应用程序的时候,或多或少会与图片打交道,下面总结下Windows Phone 中处理图片的一些技巧 1.  图片格式. 2.  图片编译方式 3.  图片加载方式 4. ...

  2. Windows Phone实用开发技巧(32):照片角度处理

    在实际项目中,可能需要用户从相册中选择图片然后进行相应的处理.但是不知道大家有没有发现这样一种情况,就是手机里看是竖着的,但是上传到微博或者哪里的时候确实横着的.一种情况是你拿手机竖着拍照得话,照片就 ...

  3. Windows Phone实用开发技巧(1):保存图片及加载图片

    在Windows Phone中,我们可能会有这样的需求:自定义应用程序的背景图片. 实际的流程是这样:用户选择图片,保存至隔离存储空间,(下一次启动时或者立即)加载图片使其成为背景图片. 下面以具体的 ...

  4. Windows Phone 实用开发技巧(9):自定义Windows Phone 页面切换动画

    在Silverlight for Windows Phone ToolKit 中默认中有自带的页面Transitions:RollTransition.RotateTransition.SlideTr ...

  5. Windows Phone 实用开发技巧(3):输入框自动聚焦并打开SIP

    大家看到这个标题,可以会问什么是SIP(看过我Windows Phone 7 Tips系列的童鞋应该知道),SIP全称为Soft Input Panel,即触摸屏中的输入键盘. 在Windows Ph ...

  6. ES6 实用开发技巧

    Javascript - ES6 实用开发技巧 本文只罗列出在 ES6 开发过程中相对实用的内容,并非一个高大全的文档,如果希望查阅详细的内容,可购买阮一峰老师所出版的 ES6 相关图书.另外阮一峰老 ...

  7. Windows半透明窗口开发技巧

    Windows半透明窗口开发技巧 www.visual-gear.com 原创技术文章 在windows平台上从窗口绘图有两种方法: 第一种响应窗口的WM_PAINT消息,使用窗口DC进行绘制 第二种 ...

  8. ES6 javascript 实用开发技巧

    Javascript - ES6 javascript 实用开发技巧 本文只罗列出在 ES6 开发过程中相对实用的内容,并非一个高大全的文档,如果希望查阅详细的内容,可购买阮一峰老师所出版的 ES6 ...

  9. 总结Windows XP实用优化技巧大放送(转)

    Windows XP是目前使用得最多的操作系统,为此书虫将自己在这几年使用Windows XP的经验汇总成连载奉献给大家.条条力求精炼,实用.今天送出的是大家都比较关心的Windows XP优化技巧. ...

最新文章

  1. AI如何落地企业?UCloud三步走战略:Build,Train,Deploy
  2. Android之利用JSBridge库实现Html,JavaScript与Android的所有交互
  3. Kruskal HDOJ 1233 还是畅通工程
  4. linux七大功能,值得Linux向其他系统借鉴的七大功能特性
  5. mysql5.5在linux下的集群,同步和配置优化
  6. python pos函数_使用python+sklearn实现特征提取
  7. 关于python django开发过程中的常见的问题及解决办法总结
  8. gitter 卸载_最佳Gitter渠道:PHP
  9. 学生用计算机怎么去掉,怎样把学生使用的计算器关掉
  10. Civil 3d 交叉口标注
  11. Spine动画 导入COCOS和U3D
  12. openwrt on MT7688 wifi启动方法
  13. 手机外接html显示器,华为MateBook怎么连接外接显示器/投影仪?
  14. int,long,long long等类型的范围
  15. 分到用时方恨少--CSDN赚积分办法
  16. python私有化属性
  17. rot5/rot13/rot18/rot47
  18. Halcon学习笔记(九)——OCR实战练习 倾斜日期检测、倒着的字符检测
  19. 测开/测试面经(个人)
  20. tp5分页后数据处理

热门文章

  1. error: Please reinstall the libcurl distribution - easy.h should be in curl-dir/include/curl/
  2. 使用 IntraWeb (39) - THttpRequest、THttpReply
  3. DML,DDL,DCL,DQL的区别
  4. Visual Studio 2005 Web Application Projects
  5. SpringCloud集成Security安全(Config配置中心)
  6. 建堆解决TopK问题
  7. 睡前小故事之Html
  8. html设置下拉筛选可以多选,select下拉框(支持筛选、多选)
  9. 犯病的chorme(谷歌浏览器)之css加载失败
  10. mysql数据库sql注入原理_sql注入原理详解(一)