2011-09-26 81 views

回答

0

編輯:我的答案是一個滑塊控件,它可以很容易地適應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> 

我敢肯定,你可以做的更好的混合使用,複製默認模板,滑塊和滑塊的價值使用TemplateBinding。

順便說一句,如果你沒有使用數據綁定滑塊的值,你可以使用ElementBinding來獲取它的值的元素的酒吧。