带有自定义图像砖的Silverlight ProgressBar

时间:2011-09-26 08:58:12

标签: silverlight

我需要一个进度条样式,它使用图像作为每个进度块。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

编辑:我的答案是Slider控件,它可以很容易地适应ProgressBar控件,使用原始帖子中的DataBinding或ElementBinding +转换器。


不是完美的解决方案,但我使用了Binding +一个自定义转换器来实现这一点,对于音量条。我的音量栏由八块砖组成,在我的情况下使用有两种颜色的矩形,一种用于非活动,一种用于活动。您可以通过图像和转换器来替换它,从而切换可见性。

<Grid>
    <StackPanel Orientation="Horizontal">
        <Rectangle Fill="{Binding Volume, ConverterParameter=0.0, Converter={StaticResource VolumeToColor}}" />
        <Rectangle Fill="{Binding Volume, ConverterParameter=0.125, Converter={StaticResource VolumeToColor}}" />
        <Rectangle Fill="{Binding Volume, ConverterParameter=0.25, Converter={StaticResource VolumeToColor}}" />
        <Rectangle Fill="{Binding Volume, ConverterParameter=0.375, Converter={StaticResource VolumeToColor}}" />
        <Rectangle Fill="{Binding Volume, ConverterParameter=0.5, Converter={StaticResource VolumeToColor}}" />
        <Rectangle Fill="{Binding Volume, ConverterParameter=0.625, Converter={StaticResource VolumeToColor}}" />
        <Rectangle Fill="{Binding Volume, ConverterParameter=0.75, Converter={StaticResource VolumeToColor}}" />
        <Rectangle Fill="{Binding Volume, ConverterParameter=0.875, Converter={StaticResource VolumeToColor}}" />
    </StackPanel>
    <Slider Maximum="1" LargeChange="0.25" SmallChange="0.1" Value="{Binding Volume, Mode=TwoWay}" Opacity="0" Height="10" />
</Grid>

我相信你可以使用Blend,复制默认的Slider模板以及在滑块的Value上使用TemplateBinding来做得更好。

顺便说一句,如果你没有对Slider的值使用数据绑定,你可以使用ElementBinding来获取它的条形元素的值。