2016-06-28 6 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はそれの迅速な作業を行う必要があります。 –

答えて

0

として以下TextBlock's Text性結合、およびForegroundためConverterDataTriggerを使用します。

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

コンバーターコード:プログレスバーの値にバインドされたLessThan /演算子:GreaterThanコンバータに夢中あなたの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(); 
    } 
} 
関連する問題