【问题标题】:Wrong color in progress bar进度条颜色错误
【发布时间】:2019-07-04 22:18:35
【问题描述】:

我有一个进度条,它以绿色开始,然后改变行为并变为红色和不确定,最后在最后一步返回确定。
在第二步中红色是正确的,但在最后一步中,前景色是错误的,它是棕色而不是红色。

xaml 文件中的进度条:

<Grid Margin="10,0" Height="58" VerticalAlignment="Bottom">
    <ProgressBar x:Name="progress_bar" Height="20" VerticalAlignment="Bottom" Margin="0,0,0,38" />
    <TextBlock x:Name="progress_bar_text" Margin="300,2,300,40" HorizontalAlignment="Center" >0% - Waiting to start...</TextBlock>
</Grid>

那么当按下中止按钮时:

private void Button_abort_Click(object sender, RoutedEventArgs e)
{       
    progress_bar.IsIndeterminate = true;
    progress_bar.Foreground = Brushes.Red;        
}

最后,当任务终止时,任务栏行为返回确定。

progress_bar.IsIndeterminate = false;
progress_bar.Foreground = Brushes.Red;

为什么进度条是棕色而不是红色?

【问题讨论】:

  • 可能是因为您使用的默认 Windows 7 主题会洗掉颜色?
  • @DenisSchaf 是的,我使用的是 Windows 7
  • 我的系统上的进度条颜色是红色的。可能@DenisSchaf 是对的。我使用的是 Windows 10
  • “前景色错误” - 透明和灰色背景改变了颜色,但它是红色的。不确定如何轻松处理ProgressBar,终止是否需要很长时间?我的意思是,您真的需要查看中断进度吗?您可以停止进度,但在终止之前阻止开始。

标签: c# wpf


【解决方案1】:

尝试在您的代码中添加此样式:

<Style TargetType="{x:Type ProgressBar}">
    <Setter Property="Foreground" Value="HotPink"/>
    <Setter Property="BorderBrush" Value="Gray"/>
    <Setter Property="Value" Value="10"/>
    <Setter Property="Minimum" Value="0"/>
    <Setter Property="Maximum" Value="100"/>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ProgressBar}">
                <Border BorderThickness="{TemplateBinding BorderThickness}"  Width="{TemplateBinding Width}" MinWidth="10" Height="{TemplateBinding Height}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
                    <Viewbox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stretch="Fill">
                        <Grid Width="{TemplateBinding Maximum}" Height="50">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Grid Background="{TemplateBinding Foreground}" Grid.Column="0" Width="{TemplateBinding Value}">
                            </Grid>
                        </Grid>
                    </Viewbox>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

这将覆盖原始控件模板并使进度条变平并且颜色将保持您设置的颜色

【讨论】:

  • 这对您有帮助还是您的问题仍然存在? @Cyr
猜你喜欢
  • 1970-01-01
  • 2015-09-19
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
相关资源
最近更新 更多