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:

				
时间: 2024-12-09 21:37:19

WPF ProgressBar 样式的相关文章

WPF自定义样式篇-DataGrid

WPF自定义样式篇-DataGrid 先上效果图: 样式: <!--DataGrid样式-->    <Style TargetType="DataGrid">        <Setter Property="RowHeaderWidth" Value="0"></Setter>        <Setter Property="AutoGenerateColumns"

ProgressBar样式总结与自动填充方法(代码)

有时候开发的时候需要用一个进度条告知用户目前正在运行一个耗时操作,但是并不需要明确知道某个value来setProgress,所以就可以自定义一个时间和进度让进度条自动运行了. 下面是代码: Handler mHandler=new Handler(){ @Override public void handleMessage(Message msg) { p.setProgress(msg.what); mHandler.post(updateThread);//实现连续过程 } }; Runn

求助 WPF ListViewItem样式问题

求助 WPF ListViewItem样式问题 .NET 开发 > Windows Presentation Foundation Вопрос 0 Нужно войти <Style TargetType="ListViewItem"> <!--<Setter Property="Margin" Value="0,1,0,0"/>--> <Setter Property="Height

progressbar样式

http://www.oschina.net/question/8676_11797 http://blog.csdn.net/ouyangtianhan/article/details/6565768 http://my.oschina.net/amigos/blog/59871 http://blog.csdn.net/mars2639/article/details/6620836 http://www.cnblogs.com/angeldevil/archive/2011/12/02/2

WPF设置样式的几种方式

第一种方式是直接使用Setter来进行,可以对Background等进行设置. <Window.Resources> <Style TargetType="Button"> <Setter Property="Background" Value="Red"/> </Style></Window.Resources> 第二种是直接将比较复杂一点的Style放置到Window.Resourc

Android中ProgressBar样式

Android系统已经被各大厂商改的面目全非,各种系统组件在不同手机上显示的效果完全不同,现在要想在开发中想要保持统一的界面风格,必须全部修改系统组件的样式,现在我们需要修改系统默认的ProgressBar,就Android系统本身来说,不同的版本组件的样式也不同. 系统中ProgressBar样式 找到android-sdk目录下的platforms\android-15\data\res\values中的styles.xml,然后查找ProgressBar,可以发现 <style name=

WPF DataGrid 样式设置

隔行换色,鼠标单击,悬浮样式都有,其具体效果如图 1 所示. 图 1 WPF DataGrid 样式设置效果图 其中: 界面设计代码下所示 ? + 查看代码 1 2 3 4 5 6 7 8 9 10 11 12 <DataGrid AutoGenerateColumns="False"  Name="dataGrid1"  VerticalAlignment="Top"       CanUserSortColumns="Fals

WPF中样式和行为和触发器

原文:WPF中样式和行为和触发器 样式简介:样式(style)是组织和重用格式化选项的重要工具,不是使用重复的标记填充XAML,以便设置外边距.内边距.颜色以及字体等细节.而是创建一系列封装所有这些细节的样式,然后在需要之处通过属性来设置样式.名称空间是System.Windows. 1.样式. 为了理解适合使用样式的集合,分析一个简单的示例,设想需要标准化在窗口中使用的字体,最简单的方式是设置包含窗口的字体属性,这些属性都是在Control类中定义的,包括FontFamily.FontSize

WPF之样式——style

wpf这门编写winform程序的技术相比常规的winform技术有一个很显著的特点--炫! 怎么才能炫起来呢? 我们都知道常规的winform技术就是拖控件,总的来说想用常规的winform技术来实现很好看的界面很难. 但是wpf就可以实现起来很轻松. 有过web知识的童鞋很好理解,咱们看到的网站大部分都比winfrom好看的多,为啥? 因为里面所有的控件都是程序人员拿HTML编写的,编程人员可以自由的定义控件的样式.我们的WPF一样可以轻松的定义控件的样式. 下面我们一起来体验一下: 我们建