2016-06-28 4 views
0

Я написал код ниже, чтобы отобразить индикатор выполнения и текст, показывающий процент. Этот текстовый блок будет помещен на панель. Но теперь шрифт белый. Как я могу добавить условие, чтобы сделать его черным, если прогресс в установке не прошел его, и если это было тогда, мне нужно изменить его на белый. Как я могу это сделать? Пожалуйста посоветуй.Как изменить цвет текста строки выполнения на основе процента прогресса в 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"/> 
+1

DataTrigger на вашем TextBlock подключили к LessThan/GreaterThan преобразователя, связанного со значением ProgressBar должны сделать быструю работу этого. –

ответ

0

TextBlock's Text Binding свойство, как показано ниже, и использовать DataTrigger с Converter для 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(); 
    } 
}