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

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

 

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

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

 

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

 

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

 

固然咱们须要提供一个接口,以便咱们在页面的Code Behind中能够控制当前显示的内容:spa

 

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

 

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

 

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

 

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

 Demo2:事件

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

 

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

咱们在Windows Phone 中一般使用DispatcherTimer 去实现每隔几秒执行某个动做的功能。

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

 

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

 

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

 

源代码下载: 

相关文章
相关标签/搜索