簡體   English   中英

如何根據WPF中的進度百分比更改進度欄文本顏色?

[英]How to change the progress bar text color based on the progress percentage in WPF?

我編寫了以下代碼來顯示進度條和顯示百分比的文本。 文本塊將放置在欄上。 但是現在字體是白色的。 如果安裝進度尚未通過,並且如果已經通過,則如何添加條件使其變為黑色,我需要將其更改為白色。 我怎樣才能做到這一點? 請指教。

<ProgressBar Minimum="0" Maximum="100" Background="#FF1B1A1A" Value="{Binding Progress }" HorizontalAlignment="Stretch" Margin="20,182,20,121" Height="20" BorderBrush="#FF1B1A1A"  >
        <ProgressBar.Foreground>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FF0A92FB"/>
                <GradientStop Color="#FF022F52" Offset="1"/>
            </LinearGradientBrush>
        </ProgressBar.Foreground>

    </ProgressBar>
    <TextBlock Name="progressLbl" Text="{Binding Progress,StringFormat={}{0}%}" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="18,182,10,121" Width="40" Height="20" Foreground="#FFE6E6E6" FontSize="12" FontFamily="Segoe UI Light"/>

如下所示綁定TextBlock's Text屬性,並將DataTriggerConverter for Foreground

   <TextBlock Text="{Binding Value, ElementName=PBar1}" Margin="92,216,159,54">
        <TextBlock.Style>
            <Style TargetType="TextBlock">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Value, ElementName=PBar1, Converter={StaticResource ConvPercentageKey}}" Value="LessThan50">
                        <Setter Property="Foreground" Value="Red"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Value, ElementName=PBar1,  Converter={StaticResource ConvPercentageKey}}" Value="MoreThan50">
                        <Setter Property="Foreground" Value="Yellow"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>

轉換器代碼:

public class PercentageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        double v = Double.Parse(value.ToString());
        if (v < 50)
            return "LessThan50";
        else
            return "MoreThan50";
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM