最近做一个项目,看到以前同事写的进度条效果不错,所以,拿来简化了下,不炫,但是项目中还是够用的。
还是,先来看下调用以后的效果

1、因为ProgressbBar的Foreground显示不得不一样,所以,要有一个参数去给控件进行设置,因此定义了一个参数值ForegroundColor
public int ForegroundColor
{get{return _foregroundColor;
}set{
_foregroundColor = value;
LinearGradientBrush lgb = dictionary["ForegroundColor" + value] as LinearGradientBrush;if (lgb != null)
proBar.Foreground = txt.Foreground = percent.Foreground = lgb;
}
}
代码里有这么一句话“LinearGradientBrush lgb = dictionary["ForegroundColor" + value] as LinearGradientBrush;”是为了方便通过这是这个参数去样式文件里取样式的。
<LinearGradientBrush x:Key="ForegroundColor1" EndPoint="1,0.5" StartPoint="0,0.5"><GradientStop Color="#FFBBF586" Offset="0.5"/><GradientStop Color="#FFD4F9C3" Offset="1"/></LinearGradientBrush><LinearGradientBrush x:Key="ForegroundColor2" EndPoint="1,0.5" StartPoint="0,0.5"><GradientStop Color="#FF5BE26E" Offset="0.5"/><GradientStop Color="#FF8DEC9C" Offset="1"/></LinearGradientBrush><LinearGradientBrush x:Key="ForegroundColor3" EndPoint="1,0.5" StartPoint="0,0.5"><GradientStop Color="#FFB656F2" Offset="0.5"/><GradientStop Color="#FFAE8DFE" Offset="1"/></LinearGradientBrush><LinearGradientBrush x:Key="ForegroundColor4" EndPoint="1,0.5" StartPoint="0,0.5"><GradientStop Color="#FF3AE9E9" Offset="0.5"/><GradientStop Color="#FF8DFDFE" Offset="1"/></LinearGradientBrush>
2、既然是ProgressBar就要有一个进度值,这个值,我们用TextBlock来进行显示,一定要实现通知接口,这样,才能保证实时的通知到页面上。
public string ValueText
{get{return _valueText;
}set{
_valueText = value;if (this.PropertyChanged != null)
{this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("ValueText"));
}
}
}
3、启用一个后台线程,来不断的更新进度效果
private void Bgw_DoWork(object sender, DoWorkEventArgs e)
{for (int i = 0; i < BarValue; i++)
{
System.Threading.Thread.Sleep(50);
proBar.Dispatcher.Invoke(new Action( delegate{if (proBar.Value <= BarValue)
{
proBar.Value++;
}
}));
ValueText = i + "";
}
ValueText = BarValue + "";
}
源码
编辑推荐:
- WPF实现简单的进度条怎么做?02-21
- angularjs是怎么为ng-click事件传递参数的?02-21
- C# 利用委托进行异步处理实例代码02-21
- Oracle Clob字段过长保存出错改如何解决?02-21
- IIS中出现了时间格式转换错误该如何解决?02-21
- lambda表达式进行对象结合操作的实例详解02-21
- 比如说我们要从用户表customer和用户订单表orders中,查询上海的用户,在最近10个月中至少消费3笔满10快钱的用户的姓名和年龄。如果写成传统的方法,不知道要写多少代码,而且各种复杂的处理逻辑02-21
- 有关DetailView的文章推荐nnnnnn篇02-21
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- WPF实现简单的进度条怎么做?
WPF实现简单的进度条怎么做?
26-02-21 - angularjs是怎么为ng-click事件传递参数的?
angularjs是怎么为ng-click事件传递参数的?
26-02-21 - IIS中出现了时间格式转换错误该如何解决?
IIS中出现了时间格式转换错误该如何解决?
26-02-21 - 有关DetailView的文章推荐nnnnnn篇
有关DetailView的文章推荐nnnnnn篇
26-02-21 - 有关DetailView的文章推荐3篇
有关DetailView的文章推荐3篇
26-02-21 - 关于接口类型的10篇课程推荐
关于接口类型的10篇课程推荐
26-02-21 - asp.net core实例教程之环境设置
asp.net core实例教程之环境设置
26-02-21 - 总结关于winfrom注意点
总结关于winfrom注意点
26-02-21 - .NET8gRPC实现高效100G大文件断点续传工具
.NET8gRPC实现高效100G大文件断点续传工具
26-02-21 - .NET使用DocNET库实现快速高效的操作PDF文档
.NET使用DocNET库实现快速高效的操作PDF文档
26-02-21
