2010-11-11 4 views

Répondre

38

Utilisez des couleurs de style HTML.

<Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
     <Setter Property="Background" Value="#FF0000"></Setter> 
    </Trigger> 

Ou, si vous voulez la transparence alpha:

<Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
     <Setter Property="Background" Value="#80FF0000"></Setter> 
    </Trigger> 

ou en utilisant votre exemple couleur de 250.200.150:

<Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
     <Setter Property="Background" Value="#FAC896"></Setter> 
    </Trigger> 
+0

Merci, savez-vous comment puis-je convertir les couleurs RVB en HTML facilement en VS? Je veux dire je pense en RGB et HSV, mais pas HTML: O –

+1

Quand je dis "couleurs HTML", il faisait référence au format du spécificateur, pas l'espace de couleur. Le format est '# RRGGBB' ou' # AARRGGBB', avec R, G et B en hexadécimal, pas en décimal. –

+0

Merci, c'est bien mais je ne sais pas comment faire dans ma tête. Comme quand je vois 255 217 220, je pense au rouge clair, et inversement, ou même au HSV, je peux rapidement imaginer la couleur dans ma tête. Mais faire ça en HEX dans ma tête, je ne l'ai jamais fait et j'ai l'impression d'avoir besoin d'une calculatrice, n'est-ce pas? –

14

Désolé, je me suis trompé ici. La façon d'utiliser est avec des valeurs à virgule flottante allant de 0 à 1.

<Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
    <Setter Property="Background" Value="sc#1.0,0.7,1.0,0.5"></Setter> 
</Trigger> 

Pour utiliser les valeurs ARVB nous devons utiliser, un peu moins tout droit

<Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <SolidColorBrush> 
       <SolidColorBrush.Color> 
        <Color A="255" R="250" G="200" B="150"/> 
       </SolidColorBrush.Color> 
      </SolidColorBrush> 
     </Setter.Value> 
    </Setter> 
</Trigger> 

Mise à jour
Vous pourrait également utiliser une coutume MarkupExtension

<Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
    <Setter Property="Background" Value="{markup:BrushFromArgb 255, 250, 200, 150}"/> 
</Trigger> 

BrushFromArgbExtension

public class BrushFromArgbExtension : MarkupExtension 
{ 
    public BrushFromArgbExtension() { } 
    public BrushFromArgbExtension(byte a, byte r, byte g, byte b) 
    { 
     A = a; 
     R = r; 
     G = g; 
     B = b; 
    } 

    public byte A { get; set; } 
    public byte R { get; set; } 
    public byte G { get; set; } 
    public byte B { get; set; } 

    public override object ProvideValue(IServiceProvider serviceProvider) 
    { 
     return new SolidColorBrush(Color.FromArgb(A, R, G, B)); 
    } 
} 

Et un semblable MarkupExtension pourrait également être utilisé pour Color

<SolidColorBrush Color="{markup:FromArgb 255, 255, 200, 150}"/> 

FromArgbExtension

public class FromArgbExtension : MarkupExtension 
{ 
    public FromArgbExtension() { } 
    public FromArgbExtension(byte a, byte r, byte g, byte b) 
    { 
     A = a; 
     R = r; 
     G = g; 
     B = b; 
    } 

    public byte A { get; set; } 
    public byte R { get; set; } 
    public byte G { get; set; } 
    public byte B { get; set; } 

    public override object ProvideValue(IServiceProvider serviceProvider) 
    { 
     return Color.FromArgb(A, R, G, B); 
    } 
} 
+0

Voilà c'est de l'or. Sais-tu ce que sc veut dire? Savez-vous également si cela est plus lent ou plus rapide que l'utilisation de couleurs HTML en termes de performances du programme? Je me souviens d'un ami qui m'a dit que WPF utilise les couleurs HTML parce qu'elles sont plus rapides à analyser. –

+1

Bonne question, que signifie scRGB? N'importe qui? :) Je ne crois pas qu'il y ait de différence de temps réel dans l'analyse mais je ne peux pas en être sûr. Cependant, à moins que ce soit un vrai goulot d'étranglement pour vous, cela ressemble à une optimisation prématurée :) –

+0

Vous spécifiez la couleur dans l'espace colorimétrique scRGB: http://en.wikipedia.org/wiki/ScRGB –

Questions connexes