Windows Phone 7–SystemTray与ProgressIndicator(wp的progressDialog)
在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的应用与经验,希望对大家在开发上有所帮助。感谢。
摘自 xiechengfa的专栏
推荐阅读
-
Windows Phone7生命周期与永久数据和临时数据的保存
-
Windows Phone 7–SystemTray与ProgressIndicator(wp的progressDialog)
-
windows phone 7,sliverlight 下载网页的解析,关于wp7 gb2312编码
-
windows Phone 7开发:C#与java不同的一些特殊语法
-
Windows Phone 7(WP7)开发 PhoneTextBox的一个BUG需要注意
-
Windows Phone 7(WP7)开发 网络操作(1) HttpWebRequest基本的GET请求
-
[翻译]WP7 QuickStart-Windows Phone下文本的使用
-
Windows Phone7生命周期与永久数据和临时数据的保存
-
Windows Phone 7–SystemTray与ProgressIndicator(wp的progressDialog)
-
windows Phone 7开发:C#与java不同的一些特殊语法