zoukankan      html  css  js  c++  java
  • WPF ProgressBar 样式

    希望写个ProgressBar的样式,在progress value不同的时候显示不同的颜色的progress bar

    1.写转换器

    public class ProgressBarValueConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                double v = (double)value;
    
                string imageUri = "../Images/progress bar_1.png";
    
                if (v > 80)
                {
                    imageUri = "../Images/progress bar_3.png";
                }
                else if (v > 50)
                {
                    imageUri = "../Images/progress bar_2.png";
                }
    
                BitmapImage img = new BitmapImage(new Uri(imageUri, UriKind.Relative));
    
                return img;
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }

    2.创建样式

        <c:ProgressBarValueConverter x:Key="pbConverter"/>
        <Style x:Key="ProgressBarStyle" TargetType="{x:Type ProgressBar}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Grid>
                            <Image Name="PART_Track" Source="../Images/progress bar.png" HorizontalAlignment="Left" Stretch="Fill"/>
                            <Image Name="PART_Indicator" Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value, Converter={StaticResource pbConverter}}"
                                       HorizontalAlignment="Left" Stretch="Fill"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    3.设置progress bar的style

    progress bar.png: 

    progress bar_1.png: 

    progress bar_2.png:

    progress bar_3.png:

    ------------------------------------------------------------------

    如果仅仅是希望创建一个扁平化的progress bar,那么连转换器都可以不用写

    <Style x:Key="FlatProgressBar" TargetType="{x:Type ProgressBar}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Grid>
                            <Image Name="PART_Track" Source="../Images/Flat Progress Bar.png" HorizontalAlignment="Left" Stretch="Fill"/>
                            <Image Name="PART_Indicator" Source="../Images/Flat Progress Bar_1.png" HorizontalAlignment="Left" Stretch="Fill"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    Flat Progress Bar.png:

    Flat Progress Bar_1.png:

    
    
  • 相关阅读:
    CentOS7局域网下安装离线Ambari
    虚拟机怎么发送ctrl+alt+delete组合键
    RedHat6.5创建本地yum源
    RedHat7安装vmware虚拟机启动报错
    Spark基本术语表+基本架构+基本提交运行模式
    Spark官网资料学习网址
    大数据开源组件图谱
    HADOOP1.X中HDFS工作原理
    大数据时代——为什么用HADOOP?
    Linux Shell脚本中获取本机ip地址方法
  • 原文地址:https://www.cnblogs.com/AlvinLiang/p/5513096.html
Copyright © 2011-2022 走看看