Неправильный цвет в прогресс-баре - PullRequest
0 голосов
/ 04 июля 2019

У меня есть индикатор выполнения, который начинается как определенный с зеленого цвета, затем меняет поведение и становится красным и неопределенным, наконец, на последнем шаге возвращает определенное значение.
На втором шаге красный цвет правильный, но на последнем шаге цвет переднего плана неправильный, он коричневый вместо красного.

Progress bar with wrong color

Индикатор выполнения в файле 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;

Почему индикатор выполнения коричневый, а не красный?

1 Ответ

0 голосов
/ 04 июля 2019

попробуйте добавить этот стиль в свой код:

<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>

Это перезапишет исходный шаблон элемента управления и сделает индикатор выполнения плоским, а цвет останется таким, какой вы его установили

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...