WPF设计界面过程中,有时需要设计一种可以手动滑动修改并实时显示的进度条

进度条,效果如下:

颜色、图标、节点什么的,都可以重新替换。

前端XAML代码:

  1. <UserControl x:Class="WpfApplication2.ProgressBarControl"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. mc:Ignorable="d"
  7. d:DesignHeight="40" d:DesignWidth="300" Loaded="ProgressBarControl_OnLoaded">
  8. <UserControl.Resources>
  9. <Style x:Key="SliderButtonStyle" TargetType="{x:Type RepeatButton}">
  10. <Setter Property="SnapsToDevicePixels" Value="true" />
  11. <Setter Property="OverridesDefaultStyle" Value="true" />
  12. <Setter Property="IsTabStop" Value="false" />
  13. <Setter Property="Focusable" Value="false" />
  14. <Setter Property="Template">
  15. <Setter.Value>
  16. <ControlTemplate TargetType="{x:Type RepeatButton}">
  17. <Border Background="Transparent" />
  18. </ControlTemplate>
  19. </Setter.Value>
  20. </Setter>
  21. </Style>
  22.  
  23. <Style x:Key="SliderThumbStyle" TargetType="{x:Type Thumb}">
  24. <Setter Property="SnapsToDevicePixels" Value="true" />
  25. <Setter Property="OverridesDefaultStyle" Value="true" />
  26. <Setter Property="Height" Value="18" />
  27. <Setter Property="Width" Value="18" />
  28. <Setter Property="Template">
  29. <Setter.Value>
  30. <ControlTemplate TargetType="{x:Type Thumb}">
  31. <!--手动绘制图标-->
  32. <Grid>
  33. <Ellipse Height="15" Width="4" Fill="Blue" Margin="0,3,0,0"></Ellipse>
  34. <Ellipse Height="15" Width="12" Fill="Blue" Margin="-0,-4,0,0"></Ellipse>
  35. </Grid>
  36. <!--<Image Source="图标.png"></Image>-->
  37. </ControlTemplate>
  38. </Setter.Value>
  39. </Setter>
  40. </Style>
  41. </UserControl.Resources>
  42. <Grid>
  43. <StackPanel>
  44. <Slider x:Name="MySlider" Value="1" Maximum="10" Margin="-6,0,0,0">
  45. <Slider.Template>
  46. <ControlTemplate TargetType="{x:Type Slider}">
  47. <Grid>
  48. <Grid.RowDefinitions>
  49. <RowDefinition Height="Auto" />
  50. <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}" />
  51. <RowDefinition Height="Auto" />
  52. </Grid.RowDefinitions>
  53. <TickBar x:Name="TopTick" SnapsToDevicePixels="True" Placement="Top" Height="4" Visibility="Collapsed"/>
  54. <Border x:Name="TrackBackground" Margin="0" CornerRadius="2" Height="4" Grid.Row="1" BorderThickness="1"/>
  55. <Track Grid.Row="1" x:Name="PART_Track">
  56. <Track.DecreaseRepeatButton>
  57. <RepeatButton Style="{StaticResource SliderButtonStyle}" Command="Slider.DecreaseLarge" />
  58. </Track.DecreaseRepeatButton>
  59. <Track.Thumb>
  60. <Thumb Style="{StaticResource SliderThumbStyle}" />
  61. </Track.Thumb>
  62. <Track.IncreaseRepeatButton>
  63. <RepeatButton Style="{StaticResource SliderButtonStyle}" Command="Slider.IncreaseLarge" />
  64. </Track.IncreaseRepeatButton>
  65. </Track>
  66. <TickBar x:Name="BottomTick" SnapsToDevicePixels="True" Grid.Row="2" Fill="{TemplateBinding Foreground}" Placement="Bottom" Height="4" Visibility="Collapsed" />
  67. </Grid>
  68. <ControlTemplate.Triggers>
  69. <Trigger Property="TickPlacement" Value="TopLeft">
  70. <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
  71. </Trigger>
  72. <Trigger Property="TickPlacement" Value="BottomRight">
  73. <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
  74. </Trigger>
  75. <Trigger Property="TickPlacement" Value="Both">
  76. <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
  77. <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
  78. </Trigger>
  79. </ControlTemplate.Triggers>
  80. </ControlTemplate>
  81. </Slider.Template>
  82. </Slider>
  83. <ProgressBar x:Name="MyProgressBar" Height="12" Foreground="Blue" Background="LightGray" BorderBrush="Transparent" Value="{Binding Value, ElementName=MySlider}" Maximum="100"/>
  84. <Grid>
  85. <Grid.ColumnDefinitions>
  86. <ColumnDefinition/>
  87. <ColumnDefinition/>
  88. <ColumnDefinition/>
  89. <ColumnDefinition/>
  90. <ColumnDefinition/>
  91. </Grid.ColumnDefinitions>
  92. <Ellipse Fill="LightBlue" Height="4" Width="4" HorizontalAlignment="Right"/>
  93. <Ellipse Grid.Column="1" Fill="LightBlue" Height="4" Width="4" HorizontalAlignment="Right"/>
  94. <Ellipse Grid.Column="2" Fill="LightBlue" Height="4" Width="4" HorizontalAlignment="Right"/>
  95. <Ellipse Grid.Column="3" Fill="LightBlue" Height="4" Width="4" HorizontalAlignment="Right"/>
  96. </Grid>
  97. </StackPanel>
  98. </Grid>
  99. </UserControl>

后台代码:

  1. /// <summary>
  2. /// ProgressBarControl.xaml 的交互逻辑
  3. /// </summary>
  4. public partial class ProgressBarControl : UserControl
  5. {
  6. public ProgressBarControl()
  7. {
  8. InitializeComponent();
  9. }
  10.  
  11. private void ProgressBarControl_OnLoaded(object sender, RoutedEventArgs e)
  12. {
  13. MySlider.Value = Value;
  14. }
  15. #region 属性
  16. /// <summary>
  17. /// 进度条值
  18. /// </summary>
  19. public double Value
  20. {
  21. get { return (double)GetValue(ValueProperty); }
  22. set
  23. {
  24. SetValue(ValueProperty, value);
  25. }
  26. }
  27.  
  28. public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(double)
  29. , typeof(ProgressBarControl), new PropertyMetadata(1.0));
  30.  
  31. #endregion
  32.  
  33. }

2、界面引用

  1. <wpfApplication2:ProgressBarControl Width="300" Value="2" VerticalAlignment="Center"></wpfApplication4:ProgressBarControl>

WPF 水平进度条的更多相关文章

  1. WPF的进度条progressbar,运行时间elapse time和等待spinner的实现

    今天用.NET 4.5中的TPL的特性做了个小例子,实现了WPF的进度条progressbar,运行时间elapse time和等待spinner. 先上图吧.   这个例子包含4个实现,分别是同步版 ...

  2. Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)

    水平进度条,显示进度的文本随着进度而移动. 效果如下,截的静态图. 代码如下 TextProgressBar.java public class TextProgressBar extends Pro ...

  3. wpf 导出Excel Wpf Button 样式 wpf简单进度条 List泛型集合对象排序 C#集合

    wpf 导出Excel   1 private void Button_Click_1(object sender, RoutedEventArgs e) 2 { 3 4 ExportDataGrid ...

  4. 安卓ProgressBar水平进度条的颜色设置

    安卓系统提供了水平进度条ProgressBar的样式,而我们在实际开发中,差点儿不可能使用默认的样式.原因就是"太丑"^_^ 所以我们在很多其它的时候须要对其颜色进行自己定义,主要 ...

  5. WPF 自定义进度条

    WPF设计界面过程中,有时需要设计一种可以手动滑动修改并实时显示的进度条 进度条,效果如下: 颜色.图标.节点什么的,都可以重新替换. 前端XAML代码: <UserControl x:Clas ...

  6. wpf 水波进度条 用户控件

    之前看公司web前端做了个 圆形的水波纹 进度条,就想用wpf 做一个,奈何自己太菜 一直做不出来,在看过 “普通的地球人” 的 “ WPF实现三星手机充电界面 博客之后 我也来照葫芦画个瓢. 废话不 ...

  7. Android 自定义水平进度条的圆角进度

    有时项目中需要实现水平圆角进度,如下两种,其实很简单     下面开始看代码,先从主界面布局开始看起: <?xml version="1.0" encoding=" ...

  8. WPF 简易进度条效果

    最近做一个项目,看到以前同事写的进度条效果不错,所以,拿来简化了下,不炫,但是项目中还是够用的. 还是,先来看下调用以后的效果 1.因为ProgressbBar的Foreground显示不得不一样,所 ...

  9. WPF自定义进度条

    <!--进度条 4812--> <LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill" Sta ...

随机推荐

  1. 解压->静态库.a文件

    1. cd /Volumes/HHD/PQS/apple/Public 2. file com_PQS.a com_PQS.a: Mach-O universal binary with 5 arch ...

  2. 转 tomcat+nginx+redis实现均衡负载、session共享(二)

    http://www.cnblogs.com/zhrxidian/p/5491285.html http://www.cnblogs.com/zhrxidian/p/5432886.html

  3. C++ 虚函数的两个例子

    1. 第一个例子是朋友告诉我Qt中的某个实现 1 #include <iostream> 2 3 // Qt中的某个实现 4 class A{ 5 public: 6 A() = defa ...

  4. Python小练习之判断一个日期是一年的第几天

    python练手遇到的一个问题写了个统一公式,不用麻烦的分各种类,如果有人测试出错误请评论通知. #分单双月 def dayNum(month,day,isLeap): if month % 2 != ...

  5. EmguCV使用Stitcher类来拼接图像

    using System; using System.Windows; using System.Collections.Generic; using System.ComponentModel; u ...

  6. Python 操作excel之 openpyxl模块

    1. 安装 pip install openpyxl 想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win-amd64-py2.7.exe · font(字体 ...

  7. PHP调用百度天气接口API

    //百度天气接口API $location = "北京"; //地区 $ak = "5slgyqGDENN7Sy7pw29IUvrZ"; //秘钥,需要申请,百 ...

  8. Java 使用 Map 实现缓存工具

    以下代码参考于网上,做了小部分修改. 该代码实现了定时清除临时缓存的功能. 缓存管理类 package com.wbproject.util.cache; import java.time.Local ...

  9. canvas转图片中的文字自动换行

    概述 最近项目用到了canvas转图片,但是由于canvas对文字排版的支持非常弱,一般我们在canvas上画不同排版的文字(比如竖排文字)都是利用js计算横纵坐标,然后一个字一个字地画出来,今天无意 ...

  10. Scala - 快速学习09 - 函数式编程:一些操作

    1- 集合类(collection) 系统地区分了可变的和不可变的集合. scala.collection包中所有的集合类 可变集合(Mutable) 顾名思义,意味着可以修改,移除或者添加一个元素. ...