WPF进度条

简介: ProgressBar控件与传统WinForm使用方法完全一样,我们只需关注: Minimum——最小值,默认为0; Maximum——最大值,默认为100. Value——当前值。   关键是它的控件模板,因为系统的默认主题不好看,很多时候我们是需要自定义样式和模板。
ProgressBar控件与传统WinForm使用方法完全一样,我们只需关注:
Minimum——最小值,默认为0;
Maximum——最大值,默认为100.
Value——当前值。
 
关键是它的控件模板,因为系统的默认主题不好看,很多时候我们是需要自定义样式和模板。
老方法,先看定义:
[csharp]  view plain copy print ?
 
  1. <span style="font-size:16px;">[TemplatePartAttribute(Name = "PART_Track", Type = typeof(FrameworkElement))]  
  2. [TemplatePartAttribute(Name = "PART_Indicator", Type = typeof(FrameworkElement))]  
  3. public class ProgressBar : RangeBase  
  4. </span>  

 
从类定义中看到,ProgressBar控件的模板有两个部分,我们在定义模板的时候用什么都可以,上面的定义指定是FrameworkElement,因此,只要是继承自FrameworkElement的都可以作为模板的一部分,重点是Name属性一定要和每个部分的名称对应,也就是说你定义的模板部件必须为PART_Track和PART_Indicator.
PART_Indicator是进度条增加指示的形状,即我们看到在滑动的部分;
PART_Track就是后面的背景层,也就是不动的那部分。
 
明白了这点就好办了。
 
 <LinearGradientBrush x:Key="g1" StartPoint="0,0" EndPoint="1,1">
  <GradientStop Color="Orange" Offset="0"/>
  <GradientStop Color="Yellow" Offset="0.5"/>
  <GradientStop Color="Orange" Offset="1"/>
 </LinearGradientBrush>
 <Style
     TargetType="{x:Type ProgressBar}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type ProgressBar}">
        <Grid MinHeight="14" MinWidth="200">
          <Border 
            Name="PART_Track" 
            CornerRadius="20"
            BorderBrush="Black"
            BorderThickness="1" Background="#FF57C7C9" />
          <Border 
           x:Name="PART_Indicator" 
           CornerRadius="16" 
           BorderBrush="Red" 
           BorderThickness="1" 
           HorizontalAlignment="Left" >
           <Border.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
             <GradientStop Color="Orange" Offset="0"/>
             <GradientStop Color="Yellow" Offset="0.5"/>
             <GradientStop Color="Orange" Offset="1"/>
            </LinearGradientBrush>
           </Border.Background>
          </Border>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

 

 


窗体上放一个ProgressBar控件

 <ProgressBar x:Name="progressBar" Margin="173,113.5,178.187,137"  OverridesDefaultStyle="True" RenderTransformOrigin="0.5,0.5" Value="55">  
   <ProgressBar.RenderTransform>  
    <TransformGroup>  
     <ScaleTransform/>  
     <SkewTransform/>  
     <RotateTransform/>  
     <TranslateTransform/>  
    </TransformGroup>  
   </ProgressBar.RenderTransform>  
   <ProgressBar.Foreground>  
    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">  
     <GradientStop Color="#FF24EE27" Offset="0"/>  
     <GradientStop Color="#FF5434AC" Offset="0.5"/>  
     <GradientStop Color="#FFB371EA" Offset="1"/>  
    </LinearGradientBrush>  
   </ProgressBar.Foreground>  
  </ProgressBar>  
  

 

 
 
 
 
 
目录
相关文章
|
C# 数据库 UED
C#-WPF ProgressBar进度条
进度条常用在加载,下载,导出一些比较耗时的地方,利用进度条能让用户看到实时进展,能有更好的用户体验……
602 0
|
人工智能 搜索推荐 C#
Photoshop和WPF双剑配合,打造炫酷个性的进度条控件
结合Photoshop和WPF,共同创建一个矢量的个性化进度条。
553 0
Photoshop和WPF双剑配合,打造炫酷个性的进度条控件
|
C#
WPF 绕圈进度条(二)
一 以前的方案 以前写过一个圆点绕圈的进度条,根据参数圆点个数和参数每次旋转角度,主要是在cs文件中动态添加圆点,通过后台定时器,动态设置角度后用正弦余弦计算(x,y)的位置。 此方案优点:动态添加Loading的圆点个数和Loading速度 此方案缺点:后台定时器耗性能 WPF 绕圈进度条(一) 二 现在的方案 如果有UI图标,或者自己能够设计矢量图的情况下,可以通过Xaml实现绕圈动画的设置。
1200 0
|
C#
WPF 绕圈进度条(二)
原文:WPF 绕圈进度条(二) 一 以前的方案 以前写过一个圆点绕圈的进度条,根据参数圆点个数和参数每次旋转角度,主要是在cs文件中动态添加圆点,通过后台定时器,动态设置角度后用正弦余弦计算(x,y)的位置。
842 0
|
前端开发 C#
WPF 绕圈进度条(一)
原文:WPF 绕圈进度条(一) 在设计界面时,有时会遇到进度条,本次讲解如何设计自定义的绕圈进度条,直接上代码:     1、控件界面 ...
1399 0
|
C# Windows
Photoshop和WPF双剑配合,打造炫酷个性的进度条控件
原文:Photoshop和WPF双剑配合,打造炫酷个性的进度条控件 现在如果想打造一款专业的App,UI的设计和操作的简便性相当重要。UI设计可以借助Photoshop或者AI等设计工具,之前了解到WPF设计工具Expression Blend可以直接导入PSD文件或者AI设计文件(当然不是全部特征支持),最近研究了一下,也费了一番周折,好在最后实现了预期的效果。
910 0
|
C#
WPF下载远程文件,并显示进度条和百分比
原文:WPF下载远程文件,并显示进度条和百分比 WPF下载远程文件,并显示进度条和百分比 1、xaml  2、CS程序 using System; using System.
1901 0
|
存储 前端开发 C#
WPF自定义控件第一 - 进度条控件
原文:WPF自定义控件第一 - 进度条控件 本文主要针对WPF新手,高手可以直接忽略,更希望高手们能给出一些更好的实现思路。 前期一个小任务需要实现一个类似含步骤进度条的控件。虽然对于XAML的了解还不是足够深入,还是摸索着做了一个。
1255 0
|
C#
WPF 控件库——仿制Windows10的进度条
原文:WPF 控件库——仿制Windows10的进度条 一、其实有现成的   先来看看Windows10进度条的两种模式:       网上有不少介绍仿制Windows10进度条的文章,也都实现了不错的效果。
1414 0
|
C#
WPF 简单的绕圈进度条(无cs代码)
方案: 图标位置不变化的情况下设置透明度实现 代码: 0:0:.84 ...
1305 0