2016-06-28 2 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위한 Converter으로 DataTrigger을 사용한다.

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

변환기 코드 :의 ProgressBar의 값에 결합 작음/[초과 컨버터 구부려 당신의 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(); 
    } 
} 
관련 문제