在Windows Phone 7 (Nodo)以前的版本中,咱們要在應用程序顯示消息提醒,或者是進度提示,一般的作法在頁面的頂部放置一個專門的容器(如一個Grid),裏面放置一些文本和PerformanceProgressBar。 在Mango中,咱們多了一種選擇,就是能夠在SystemTray中顯示文本和進度條。以下圖,SystemTray即顯示系統信息的狀態欄,有當前的信號,電量,時間等等。 windows
Jeff 寫過一篇利用SystemTray的文章,本文是在其基礎上作了一些延伸。我會以兩個Demo來演示SystemTray的使用方法數組
像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。下面的代碼是外部若是調用的,十分簡單: