Windows Phone 7 – SystemTray与ProgressIndicator(wp的progressDialog)

这一篇内容主要介绍一个大家撰写App时第一件会做的事,「隐藏画面最上方的系统轴」;

  在Android或iOS裡,只有在游戏模戏下,才能隐藏系统轴,其余最多只能隐藏显示应用程式的标题列。

  但我在猜想:「是否由于iOS/Android可由顶端往下拉出通知範围,所以不能隐藏系统轴?」,也许未来WP也支援类似的功能后,系统轴隐藏的功能也不能了,但这只是猜测,先让我们来看看怎么实作吧。

  〉SystemTray:

  属于Microsoft.Phone.Shell Namespace裡的类别,主要任务为提供Application Page上System Tray的方法与属性。

  几个要注意的属性与方法:

方法/属性 说明
CheckAccess 用于确定唿叫该属性的Thread是否有存取该物件的能力。 
CheckAccess是个Utility方法, 
true:代表唿叫的Thread与要操作的DependencyObject属于相同的Thread; 
false:代表建立该DependencyObject的Thread与唿叫的Thread不相同; 
如果是false则会出现Exception要特别注意。
GetProgressIndicator 取得Application Page中的ProgressIndicator的物件/属性。
SetProgressIndicator 设定Application Page中的ProgressIndicator的物件/属性。

  往下继续说明怎么操作SystemTray。

  a. 开启/关闭System Tray:

   1: //記得using Microsoft.Phone.Shell namespace
   2:  
   3: private void ChangeSystemTray(bool pVisible)
   4: {
   5:     // true: 顯示; false: 隱藏;
   6:     SystemTray.IsVisible = pVisible;
   7: }

  b. 在System Tray裡得到那些Status Icons呢?根据的介绍,包括如下图:

  

 

  〉ProgressIndicator:

  该类别用意在提供每个Application Page上的System Tray有一个互动的progress indicator。WP 7.1 SDK新增加的,以前在WP 7.0 SDK裡没有这个类别,所以如果程式裡需要做到背景执行的任务时,通常会popup一个Progressbar,

  让使用者知道目前正在处理交易,请他们等待。那么,要如何使用它呢?

  a. 使用Code建立ProgressIndicator:

   1: private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
   2: {
   3:     //需要確實把SystemTray.IsVisible = true,ProgressIndicator才能顯示
   4:     Microsoft.Phone.Shell.SystemTray.IsVisible = true;
   5:            
   6:     //建立一個新的ProgressIndicator
   7:     ProgressIndicator tProgIndicator = new ProgressIndicator();
   8:     tProgIndicator.IsVisible = true;
   9:     //操作與ProgressBar相同的屬性
  10:     tProgIndicator.IsIndeterminate = true;
  11:     tProgIndicator.Text = "Loading...";
  12:     //將ProgressIndicator加入SystemTray之中,並指定DependencyObject為Application Page。
  13:     SystemTray.SetProgressIndicator(this, tProgIndicator);
  14: }

  b. 使用XAML建立ProgressIndicator:

   1: <shell:SystemTray.ProgressIndicator>
   2:     <shell:ProgressIndicator IsIndeterminate="True" 
   3:             IsVisible="True" Text="Loading..." />
   4: </shell:SystemTray.ProgressIndicator>

  了解ProgressIndicator的建立方式之后,在使用时机上有一个要特别注意的:

  1. 使用Popup来显示ProgressBar可以在Application Page上在盖上一个UI Control,告知使用者目前不可操作画面;

  2. 使用ProgressIndicator,其Application Page上的画面是可以继续操作的,因此需注意使用的情境与对象;

  [补充]

  ‧ 如何动态取得目前画面的Width/Height;

  如果想使用目前画面的Size来修改要呈现的UI Control时,直接使用Application Page的Width/Height是不行的,建议可以使用:「App.Current.RootVisual.RenderSize.Height」或「App.Current.RootVisual.RenderSize.Width」;

  使用时机在Application Page的Loaded事件之后。

  ======

  概略地说明与补充了相关SystemTray的应用与经验,希望对大家在开发上有所帮助。感谢。

  本文来自pou的博客,原文地址:http://www.dotblogs.com.tw/pou/archive/2012/04/29/71886.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值