Windows Phone 实用开发技巧(18):使用SystemTray显示全局消息提醒
在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是如何写的: