不同颜色的WPF进度条

不同颜色的WPF进度条,wpf,wpf-controls,Wpf,Wpf Controls,我处于报警状态。我想借助颜色在进度条上反映报警状态。 如果操作员已将报警处理到30%状态,则进度条将显示30%颜色,如果操作员已处理到60%。因此,进度条将以红色显示前30%,然后以蓝色显示下30% 我将进度条的值设置为30并获得绿色。我的问题是,当我想将其设置为60%时,前30%将显示绿色,下一个将显示红色。下面是您的示例。为ProgressBar设置MyProgressBarStyle。我已经使用LinearGradientBrush将进度条的背景设置为30%红色、30%绿色和30%蓝色。并

我处于报警状态。我想借助颜色在进度条上反映报警状态。 如果操作员已将报警处理到30%状态,则进度条将显示30%颜色,如果操作员已处理到60%。因此,进度条将以红色显示前30%,然后以蓝色显示下30%


我将进度条的值设置为30并获得绿色。我的问题是,当我想将其设置为60%时,前30%将显示绿色,下一个将显示红色。

下面是您的示例。为ProgressBar设置MyProgressBarStyle。我已经使用LinearGradientBrush将进度条的背景设置为30%红色、30%绿色和30%蓝色。并反转零件指示灯。因此,您需要使用SetMyProgressBarValue函数来设置ProgressBar的百分比值。试试看,它对我有用

XAML

     <Grid Background="Gray">
            <Grid.Resources>
               <Style x:Key="MyProgressBarStyle"  TargetType="{x:Type ProgressBar}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ProgressBar}">
                                <Grid MinHeight="14" MinWidth="200">
                                    <Border Name="PART_Track" CornerRadius="2" BorderBrush="Transparent" BorderThickness="1" >
                                        <Border.Background>
                                            <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
                                                <LinearGradientBrush.GradientStops>
                                                    <GradientStop Color="red" Offset="0" ></GradientStop>
                                                    <GradientStop Color="red" Offset="0.3" ></GradientStop>
                                                    <GradientStop Color="Green" Offset=".3" ></GradientStop>
                                                    <GradientStop Color="Green" Offset=".3" ></GradientStop>
                                                    <GradientStop Color="Green" Offset=".6" ></GradientStop>
                                                    <GradientStop Color="Blue" Offset=".6" ></GradientStop>
                                                    <GradientStop Color="Blue" Offset="1" ></GradientStop>
                                                </LinearGradientBrush.GradientStops>
                                            </LinearGradientBrush>
                                        </Border.Background>
                                    </Border>
                                    <Border 
                                    Name="PART_Indicator" 
                                    CornerRadius="2" 
                                    Background="Gray" 
                                    BorderBrush="Transparent" 
                                    BorderThickness="1" 
                                    HorizontalAlignment="Right" />
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Grid.Resources>
            <ProgressBar x:Name="MyProgressBar" Style="{StaticResource MyProgressBarStyle}" Minimum="0" Maximum="100" Height="80" Value="20"></ProgressBar>
        </Grid>

你能把你的一些代码贴出来吗?
 public void SetMyProgressBarValue(Double percentageValue)
 {
     MyProgressBar.Value = 100 - percentageValue;
 }