2014-01-13 71 views
0

我正在使用进度条,我试图找到一种方法将前景色设置为红色,如果其下面的标签中的showError变量(布尔值)为true。我可以使用数据触发器根据进度栏值设置前景色,如下所示,但我无法捕获showError变量中的值。有人设法做到这一点?WPF更改进度条前景颜色

<ProgressBar Maximum="{Binding Max}" Minimum="{Binding Min}" Name="progressBar" Value="{Binding Path=Value}" > 
     <ProgressBar.Resources> 
      <Style TargetType="{x:Type ProgressBar}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Value}" Value="10"> 
         <Setter Property="Foreground" Value="Blue"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </ProgressBar.Resources> 
    </ProgressBar> 
    <Label Visibility="{Binding Path=ShowError, Converter={StaticResource booleanToVisibilityConverter}}" Content="Service was not available" Height="28" HorizontalAlignment="Left" Margin="408,238,0,0" Name="label2"/> 

回答

0

看起来像ShowError是您的视图模型的属性。因此,您不需要ProgressBarLabel之间的任何关系。只需使用类似这样的东西:

<ProgressBar> 
    <ProgressBar.Style> 
     <Style TargetType="{x:Type ProgressBar}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ShowError}" Value="True"> 
        <Setter Property="Foreground" Value="Red"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ProgressBar.Style> 
</ProgressBar> 
+0

对不起,我应该说清楚。 ShowError是我的viewmodel的一个属性。非常感谢。我会试试这个。 – user1698316

+0

工作完美谢谢。 – user1698316

0

由于您的标签和进度条都绑定到View Model Property ShowError,因此您不需要使标签和进度栏相互依赖。

Registers Jashobanta