设为首页 收藏本站
查看: 852|回复: 0

[经验分享] Windows Phone 7 – SystemTray与ProgressIndicator(wp的progressDialog)

[复制链接]

尚未签到

发表于 2016-5-24 11:00:56 | 显示全部楼层 |阅读模式

这一篇内容主要介绍一个大家撰写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呢?根据的介绍,包括如下图:


  


http://www.silverlightchina.net/uploads/allimg/120502/1942552451-0.png


  〉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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-221080-1-1.html 上篇帖子: windows消费者预览版的出用感受 下篇帖子: windows批处理(shell)多行字符串匹配
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表