欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-12-17 22:15:08
这一篇内容主要介绍一个大家撰写app时第一件会做的事,「隐藏画面最上方的轴」;   在android或ios裡,只有在游戏模戏下,才能隐藏系统轴,其余最多只能隐藏显示应用程式的标题列。   但我在猜...
这一篇内容主要介绍一个大家撰写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呢?根据的介绍,包括如下图:
  

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



〉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的应用与经验,希望对大家在开发上有所帮助。感谢。

 

 

摘自 xiechengfa的专栏