[WP7開發] 利用 SystemTray 做進度提示 (Mango)

Windows Phone 7 在 Mango 更新(Windows Phone 7.5)之後新增了不少 APIs,其中一個部份就是能在程式中操作 SystemTray 的控制項,這個控制項本身就有提供 ProgressIndicator 的物件設計,所以很適合用來做為讀取中的提示訊息。

使用 SystemTray 可以從設計介面的 XAML 檔案以及程式碼來下手,首先如果要在 XAML 中最上層的 <phone:PhoneApplicationPage>標籤中加入下列的屬性:

 <phone:PhoneApplicationpage
  ...
  xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
  ...
  shell:SystemTray.BackgroundColor="<背景顏色>"
  shell:SystemTray.ForegroundColor="<前景顏色>"
  shell:SystemTray.Opacity="<透明度>"
  shell:SystemTray.IsVisible="<啟動時是否顯示>">
    ...
</phone:phoneapplicationpage>

這些屬性是用來指定 SystemTray 控制項一些基本視覺元素,但光是這樣還沒辦法讓它成為讀取的提示,還需要在程式裡面指定 ProgressIndicator 才行,程式的操作範例如下:

 using Microsoft.Phone.Shell;
...
// 建立 ProgressIndicator 並設定給 SystemTray
ProgressIndicator pi = new ProgressIndicator();
pi.Text = "Loading...";
pi.IsIndeterminate = true;
pi.IsVisible = true;
SystemTray.SetProgressIndicator(this, pi);

...

// 讓 SystemTray 顯示或隱藏
SystemTray.IsVisible = <true|false>;

這樣做出來的效果就會像是這樣(BackgrounColor="Blue" ForegroundColor="White"):