您的位置:首页 > Web前端 > CSS

WPF ProgressBar 样式

2016-05-20 18:14 423 查看
希望写个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:





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: