当处理耗时任务时,我们自然要给个进度指示器让用户看到应用正在做事呢,不然用户就会想到底好没好啊,死了?。所以我们一定要有进度指示器,这样才是一个正常的用户体验。而创建进度指示器的最简单方法就是使用系统托盘里的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相关推荐

  1. Qt之Q_GLOBAL_STATIC创建全局静态对象

    概述 所谓的全局静态对象,大多是在单例类中所见,之前写过一篇文章介绍如何实现一个单例类,在这里,这是最常见的方式来进行创建,需要自定义 static 类对象, 并进行手动初始化.而今天要说的是更简单的 ...

  2. vue怎么自己创建组件并引用_Vue 实现创建全局组件,并且使用Vue.use() 载入方式

    自定义vue组件,一般是局部引用的方式载入,使用的时候,在应用的组件中使用 import moduleName from 'module' 导入,在components中注册 {{info.title ...

  3. NetSuite 创建全局库存关系记录

    创建全局库存关系记录 创建全局库存关系记录 要创建一个全局库存关系记录: 主要信息 履行 客户退货 删除一个全局库存关系记录 创建全局库存关系记录 要使用公司间跨组织履行功能来履行或接收库存,需要创建 ...

  4. 创建全局AD组与用户

    一.创建全局AD组用户:Sales(Sales001-100) for /L %a in (1,1,100) do net user Sales00%a ChinaSkills22 /add /dom ...

  5. springboot项目创建全局唯一id生成器

    springboot项目创建全局唯一id生成方法,参考 Snowflake算法 yml文件 #app 全局唯一id生成 app:idGenerator:workerId: 1datacenterId: ...

  6. vue项目中创建全局组件

    在项目中需要用到一个确认删除的弹窗,因为有多个地方需要用到这个提示框,不想每次用的时候都要引入一次这个弹窗组件,因此把它做成了一个全局组件:这里使用了element UI的dialog来实现的弹窗效果 ...

  7. laravel 中创建全局函数 (类似于 TP 中 functions.php) 的方式

    最近,在使用Laravel写东西,因为框架本身的设计理念的不同,刚从ThinPHP3切换到Laravel5,感觉还是很怪的,各种不习惯,但是一旦写过一些代码,发现Laravel真的非常好用.我一直觉得 ...

  8. android java函数_java – 在android中创建全局函数

    像这样创建类并在此处添加您的函数: package com.mytest; import android.content.Context; import android.net.Connectivit ...

  9. qt -- Q_GLOBAL_STATIC创建全局静态对象

    创建一个全局静态对象,类型为QGlobalStatic,名称为VariableName,行为像一个指向type的指针. Q_GLOBAL_STATIC创建的对象在第一次使用时初始化自己,这意味着它不会 ...

  10. 创建全局函数mysql_MySQL系列(十):函数

    将一段代码块封装到一个结构中,在需要执行代码块的时候调用结构,可以提高代码的复用性. 任何函数都有返回值,因此函数的调用通过select调用. 一.系统函数 Mysql系统定义好的函数,可以直接使用. ...

最新文章

  1. 安卓中的单例模式和工厂模式
  2. struct和class之间问题(+引发的个人思考,和对共用体思考)
  3. sublime用cmd窗口调试python_如何使用xdebug和sublime调试python脚本
  4. 全国首个人工智能专业,怎么学?
  5. 云漫圈 | 谈谈怎么做【服务隔离】
  6. 信息学奥赛一本通(1042:奇偶ASCII值判断)
  7. 解决“Linux无法登录,显示module is unknown”问题
  8. Tips--开源心音数据库整理(我愿称之为史上最全)
  9. TCP 半连接队列和全连接队列满了,怎么破?
  10. 上司:我们为什么要使用企业云盘?
  11. c语言调试的意义,C语言的调试
  12. 收藏!从十篇顶会论文解读计算机视觉的未来之路!
  13. 常用邮箱服务器(SMTP,POP3)地址
  14. github上比较好用的第三方库
  15. 垃圾收集器G1与ZGC
  16. 问题记录:系统还原后,QQ显示一直登录中,但却登录不上去,而且很多软件无法使用
  17. Zabbix 5.0 监控教程(一)
  18. MySQL数据库——SQL函数
  19. 2022年全球注释软件行业分析报告
  20. Intellij IDEA 2017 debug断点调试技巧与总结详解篇

热门文章

  1. presto distinct用法
  2. src refspec main does not match any
  3. Cmake构建_设置debug与release输出路径
  4. 聊聊flink的RestartStrategies
  5. 基于channel的goroutine
  6. 关于SpringMVC中model的attribute无法指定别名的解决方案
  7. 三种新型DDoS反射攻击出现
  8. 研究预测2022年全球VoLTE市场规模达348亿美元
  9. CSS3 Gradient渐变
  10. 【原创】C#实现视频远程监控(下载)