ProgressBar控件与传统WinForm使用方法完全一样,我们只需关注:
Minimum——最小值,默认为0;
Maximum——最大值,默认为100.
Value——当前值。
 
关键是它的控件模板,因为系统的默认主题不好看,很多时候我们是需要自定义样式和模板。
老方法,先看定义:
  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就是后面的背景层,也就是不动的那部分。
 
明白了这点就好办了。
 
  1. <span style="font-size:16px;"> <LinearGradientBrush x:Key="g1" StartPoint="0,0" EndPoint="1,1">
  2. <GradientStop Color="Orange" Offset="0"/>
  3. <GradientStop Color="Yellow" Offset="0.5"/>
  4. <GradientStop Color="Orange" Offset="1"/>
  5. </LinearGradientBrush>
  6. <Style
  7. TargetType="{x:Type ProgressBar}">
  8. <Setter Property="Template">
  9. <Setter.Value>
  10. <ControlTemplate TargetType="{x:Type ProgressBar}">
  11. <Grid MinHeight="14" MinWidth="200">
  12. <Border
  13. Name="PART_Track"
  14. CornerRadius="20"
  15. BorderBrush="Black"
  16. BorderThickness="1" Background="#FF57C7C9" />
  17. <Border
  18. x:Name="PART_Indicator"
  19. CornerRadius="16"
  20. BorderBrush="Red"
  21. BorderThickness="1"
  22. HorizontalAlignment="Left" >
  23. <Border.Background>
  24. <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
  25. <GradientStop Color="Orange" Offset="0"/>
  26. <GradientStop Color="Yellow" Offset="0.5"/>
  27. <GradientStop Color="Orange" Offset="1"/>
  28. </LinearGradientBrush>
  29. </Border.Background>
  30. </Border>
  31. </Grid>
  32. </ControlTemplate>
  33. </Setter.Value>
  34. </Setter>
  35. </Style>
  36. </span>

窗体上放一个ProgressBar控件

  1. <span style="font-size:16px;">  <ProgressBar x:Name="progressBar" Margin="173,113.5,178.187,137"  OverridesDefaultStyle="True" RenderTransformOrigin="0.5,0.5" Value="55">
  2. <ProgressBar.RenderTransform>
  3. <TransformGroup>
  4. <ScaleTransform/>
  5. <SkewTransform/>
  6. <RotateTransform/>
  7. <TranslateTransform/>
  8. </TransformGroup>
  9. </ProgressBar.RenderTransform>
  10. <ProgressBar.Foreground>
  11. <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
  12. <GradientStop Color="#FF24EE27" Offset="0"/>
  13. <GradientStop Color="#FF5434AC" Offset="0.5"/>
  14. <GradientStop Color="#FFB371EA" Offset="1"/>
  15. </LinearGradientBrush>
  16. </ProgressBar.Foreground>
  17. </ProgressBar>
  18. </span>

 
 
 
 

继续聊WPF——进度条的更多相关文章

  1. WPF 进度条ProgressBar

    今天研究了一下wpf的进度条ProgressBar 1.传统ProgressBar WPF进度条ProgressBar 这个控件,如果直接写到循环里,会死掉,界面会卡死,不会有进度.需要把进度条放到单 ...

  2. WPF进度条系列②旋转小圆圈

     写在之前: 关于WPF的样式,我也是学习了很多朋友的文章才有了下面的东西,因为时间有些久远 & 备份的链接也都不在了. 所以,究竟是看过哪些文章,也是记不清楚了…… 请见谅. ------- ...

  3. C# WPF 进度条,根据读取数据显示进度条进度,根据Excel文件读取数据,进度条样式

    后台代码: //导入 private void Border_MouseLeftButtonUp_2(object sender, MouseButtonEventArgs e) { var path ...

  4. wpf 进度条 下拉

    <Window x:Class="WpfApplication1.MainWindow"        xmlns="http://schemas.microsof ...

  5. WPF进度条

    ProgressBar控件与传统WinForm使用方法完全一样,我们只需关注: Minimum——最小值,默认为0: Maximum——最大值,默认为100. Value——当前值.   关键是它的控 ...

  6. WPF进度条系列①滑动小圆点

     写在之前: 关于WPF的样式,我也是学习了很多朋友的文章才有了下面的东西,因为时间有些久远 & 备份的链接也都不在了. 所以,究竟是看过哪些文章,也是记不清楚了…… 请见谅. ------- ...

  7. WPF 进度条

    //Create a Delegate that matches the Signature of the ProgressBar's SetValue method private delegate ...

  8. Photoshop和WPF双剑配合,打造炫酷个性的进度条控件

    现在如果想打造一款专业的App,UI的设计和操作的简便性相当重要.UI设计可以借助Photoshop或者AI等设计工具,之前了解到WPF设计工具Expression Blend可以直接导入PSD文件或 ...

  9. WPF自定义控件第一 - 进度条控件

    本文主要针对WPF新手,高手可以直接忽略,更希望高手们能给出一些更好的实现思路. 前期一个小任务需要实现一个类似含步骤进度条的控件.虽然对于XAML的了解还不是足够深入,还是摸索着做了一个.这篇文章介 ...

随机推荐

  1. LeetCode60:Permutation Sequence

    The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  2. Java 二进制和十进制互转,二进制和BitSet互转

    /** * 二进制转十进制 * * @param binaryNumber * @return */ public static int binaryToDecimal(int binaryNumbe ...

  3. ubuntu使用ssh连接远程电脑的方法

    目前,大多数linux distributions都预先安装了ssh的客户端,即可以连接别人的电脑.但也有例外的情况,所以,下面先把ssh的客户端与服务端的安装一并讲了吧. ssh客户端及服务端的安装 ...

  4. hdoj--5100--Chessboard(数学推理)

     Chessboard Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  5. CodeForces--626C--Block Towers (二分)

    Block Towers Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit ...

  6. Python入门 五、学着机器思考

    正则表达式(1) import re text = "Hi,I am Shirley Hilton.I am his wife." m = re.findall(r"hi ...

  7. selenium3 + python3 - alert定位

    一.alert\confirm\prompt弹出框操作主要方法有: text:获取文本值 accept() :点击"确认" dismiss() :点击"取消"或 ...

  8. 详细解读css中的浮动以及清除浮动的方法

    对于前端初学者来说,css浮动部分的知识是一块比较难以理解的部分,下面我将把我学习过程中的心得分享给大家. 导读:   1.css块级元素讲解 2.css中浮动是如何产生的 3.出现浮动后,如何清除浮 ...

  9. jQuery学习笔记之插件开发(4)

    jQuery学习笔记之插件开发(4) github源码地址 插件:了让原有功能的增强. 1.插件的种类(3种):局部.全局.选择器插件 1.1封装对象方法的插件 这种类型的插件是把一些常用或者重复使用 ...

  10. 1C课程笔记分享_StudyJams_2017

    课程1C 概述 课程1C是创建一个生日贺卡应用的实践课程,所以本篇笔记分享主要记录个人的实践过程,此外分享一些比较零散的知识点. Drawable文件夹 Drawable文件夹是Android项目统一 ...