创建全局SystemTray.ProgressIndicator
当处理耗时任务时,我们自然要给个进度指示器让用户看到应用正在做事呢,不然用户就会想到底好没好啊,死了?。所以我们一定要有进度指示器,这样才是一个正常的用户体验
。而创建进度指示器的最简单方法就是使用系统托盘里的ProgressIndicator,不过系统托盘和页面是挂钩的,要是用户这时转入其它页面,那ProgressIndicator就没了啊,用户就看不到进度了
。所以不管用户做了什么事,ProgressIndicator都要显示出来,就是要做个全局的ProgressIndicator。于是网上搜索一番,找到了个代码,思路是这样的:写一个类,保存ProgressIndicator的相关数据,订阅Frame的Navigating和Navigated,监视页面切换。对移入的页面,利用保存的数据创建一个ProgressIndicator显示出来,对移出的页面,隐藏ProgressIndicator。不过后来想了想,能不能用绑定来实现呢?于是试了一下,果真可以。
下面是相关代码:
using System; using System.ComponentModel; namespace *.ViewModels {public class ProgressIndicatorViewModel : INotifyPropertyChanged{private Boolean isVisible;private String text;private Boolean isIndeterminate;private Double value;/// <summary>/// 获取或设置 是否显示ProgressIndicator。/// </summary>public Boolean IsVisible{get{return isVisible;}set{if (isVisible != value){isVisible = value;NotifyPropertyChanged("IsVisible");}}}/// <summary>/// 获取或设置 显示的文字。/// </summary>public String Text{get{return text;}set{if (text != value){text = value;NotifyPropertyChanged("Text");}}}/// <summary>/// 获取或设置 进度指示器是不确定的还是确定的。/// </summary>public Boolean IsIndeterminate{get{return isIndeterminate;}set{if (isIndeterminate != value){isIndeterminate = value;NotifyPropertyChanged("IsIndeterminate");}}}/// <summary>/// 获取或设置 进度(0-1)。/// </summary>public Double Value{get{return value;}set{if (this.value != value){this.value = value;NotifyPropertyChanged("Value");}}}public ProgressIndicatorViewModel(){isVisible = false;text = String.Empty;isIndeterminate = false;value = 0;}public event PropertyChangedEventHandler PropertyChanged;private void NotifyPropertyChanged(String propertyName){if (null != PropertyChanged)PropertyChanged(this, new PropertyChangedEventArgs(propertyName));}} }
<phone:PhoneApplicationPageshell:SystemTray.Opacity="0"shell:SystemTray.IsVisible="{Binding IsVisible}"><shell:SystemTray.ProgressIndicator><shell:ProgressIndicator IsVisible="{Binding IsVisible}"Text="{Binding Text}"IsIndeterminate="{Binding IsIndeterminate}"Value="{Binding Value}"/></shell:SystemTray.ProgressIndicator><Grid></Grid></phone:PhoneApplicationPage>
转载于:https://www.cnblogs.com/rainstorm/archive/2013/04/29/3051058.html
创建全局SystemTray.ProgressIndicator相关推荐
- Qt之Q_GLOBAL_STATIC创建全局静态对象
概述 所谓的全局静态对象,大多是在单例类中所见,之前写过一篇文章介绍如何实现一个单例类,在这里,这是最常见的方式来进行创建,需要自定义 static 类对象, 并进行手动初始化.而今天要说的是更简单的 ...
- vue怎么自己创建组件并引用_Vue 实现创建全局组件,并且使用Vue.use() 载入方式
自定义vue组件,一般是局部引用的方式载入,使用的时候,在应用的组件中使用 import moduleName from 'module' 导入,在components中注册 {{info.title ...
- NetSuite 创建全局库存关系记录
创建全局库存关系记录 创建全局库存关系记录 要创建一个全局库存关系记录: 主要信息 履行 客户退货 删除一个全局库存关系记录 创建全局库存关系记录 要使用公司间跨组织履行功能来履行或接收库存,需要创建 ...
- 创建全局AD组与用户
一.创建全局AD组用户:Sales(Sales001-100) for /L %a in (1,1,100) do net user Sales00%a ChinaSkills22 /add /dom ...
- springboot项目创建全局唯一id生成器
springboot项目创建全局唯一id生成方法,参考 Snowflake算法 yml文件 #app 全局唯一id生成 app:idGenerator:workerId: 1datacenterId: ...
- vue项目中创建全局组件
在项目中需要用到一个确认删除的弹窗,因为有多个地方需要用到这个提示框,不想每次用的时候都要引入一次这个弹窗组件,因此把它做成了一个全局组件:这里使用了element UI的dialog来实现的弹窗效果 ...
- laravel 中创建全局函数 (类似于 TP 中 functions.php) 的方式
最近,在使用Laravel写东西,因为框架本身的设计理念的不同,刚从ThinPHP3切换到Laravel5,感觉还是很怪的,各种不习惯,但是一旦写过一些代码,发现Laravel真的非常好用.我一直觉得 ...
- android java函数_java – 在android中创建全局函数
像这样创建类并在此处添加您的函数: package com.mytest; import android.content.Context; import android.net.Connectivit ...
- qt -- Q_GLOBAL_STATIC创建全局静态对象
创建一个全局静态对象,类型为QGlobalStatic,名称为VariableName,行为像一个指向type的指针. Q_GLOBAL_STATIC创建的对象在第一次使用时初始化自己,这意味着它不会 ...
- 创建全局函数mysql_MySQL系列(十):函数
将一段代码块封装到一个结构中,在需要执行代码块的时候调用结构,可以提高代码的复用性. 任何函数都有返回值,因此函数的调用通过select调用. 一.系统函数 Mysql系统定义好的函数,可以直接使用. ...
最新文章
- 安卓中的单例模式和工厂模式
- struct和class之间问题(+引发的个人思考,和对共用体思考)
- sublime用cmd窗口调试python_如何使用xdebug和sublime调试python脚本
- 全国首个人工智能专业,怎么学?
- 云漫圈 | 谈谈怎么做【服务隔离】
- 信息学奥赛一本通(1042:奇偶ASCII值判断)
- 解决“Linux无法登录,显示module is unknown”问题
- Tips--开源心音数据库整理(我愿称之为史上最全)
- TCP 半连接队列和全连接队列满了,怎么破?
- 上司:我们为什么要使用企业云盘?
- c语言调试的意义,C语言的调试
- 收藏!从十篇顶会论文解读计算机视觉的未来之路!
- 常用邮箱服务器(SMTP,POP3)地址
- github上比较好用的第三方库
- 垃圾收集器G1与ZGC
- 问题记录:系统还原后,QQ显示一直登录中,但却登录不上去,而且很多软件无法使用
- Zabbix 5.0 监控教程(一)
- MySQL数据库——SQL函数
- 2022年全球注释软件行业分析报告
- Intellij IDEA 2017 debug断点调试技巧与总结详解篇