2009-06-05 6 views
0

Je voudrais appliquer un style, à un ProgressBar, pour quand il entre certaines valeurs le style devrait changer.WPF valeurs multiples pour la propriété

<Style x:Key="ProBar" TargetType="{x:Type ProgressBar}">  
     <Style.Triggers> 
     <Trigger Property="Value" Value="<10"> 
      <Setter Property="Foreground"> 
      <Setter.Value> 
       <!--OrangeColour--> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#FFFFFFFF" Offset="0" /> 
       <GradientStop Color="#FFFDDF97" Offset="0.992" /> 
       <GradientStop Color="#FFF7DCAB" Offset="0.02" /> 
       <GradientStop Color="#FFFFDC9E" Offset="0.5" /> 
       <GradientStop Color="#FFFDA564" Offset="0.513" /> 
       </LinearGradientBrush> 
      </Setter.Value> 
      </Setter> 
     </Trigger>  
     </Style.Triggers> 
    </Style> 

Est-il possible de le faire de quelque façon que ce soit?

Répondre

2

Utilisez un DataTrigger, un liant et un IValueConverter

<DataTrigger Binding="{Binding Value, Converter={StaticResource IsMyValueLowEnoughConverter}}" Value="True"> 

Converter:

public class IsMyValueLowEnoughConverter : IValueConverter 
{ 
    public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return ((int)value) < 10; 
    } 

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

Assurez-vous de mettre le convertisseur dans vos ressources de votre fichier XAML d'origine:

<IsMyValueLowEnoughConverter x:Key="IsMyValueLowEnoughConverter" /> 
Questions connexes