2010-11-11 8 views

Respuesta

38

Use colores de estilo HTML.

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

O, si se quiere transparencia alfa:

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

o utilizar el ejemplo del color de 250.200.150:

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

Gracias, ¿sabe cómo puedo convertir los colores de RGB a HTML fácilmente en VS? Quiero decir que creo en RGB y HSV, pero no HTML: O –

+1

Cuando digo "colores HTML", se estaba refiriendo al formato del especificador, no al espacio de color. El formato es '# RRGGBB' o' # AARRGGBB', con R, G y B en hexadecimal, no decimal. –

+0

Gracias, eso está bien, pero no sé cómo hacerlo en mi cabeza. Como cuando veo 255 217 220, pienso en rojo claro, y viceversa, o incluso en HSV, puedo imaginar rápidamente el color en mi cabeza. Pero al hacer esto en HEX en mi cabeza, nunca lo hice y parece que necesito una calculadora para eso, ¿no? –

14

Lo siento, estaba mal aquí. La manera de utilizar esto es con valores de puntos que van de 0 a 1.

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

Para utilizar los valores ARGB debemos utilizar este flotante, un poco menos sencillo

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

actualización
Usted también es posible usar una costumbre 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)); 
    } 
} 

Y un similares MarkupExtension también podrían utilizarse para 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

Eso es oro. ¿Sabes lo que significa sc? ¿También sabe si esto es más lento o más rápido que usar colores HTML en términos de rendimiento del programa? Recuerdo que un amigo me dijo que WPF usa colores HTML porque son más rápidos de analizar. –

+1

Buena pregunta, ¿qué significa scRGB? ¿Nadie? :) No creo que haya una diferencia de tiempo real en el análisis, pero no estoy seguro. Sin embargo, a menos que esto sea un verdadero cuello de botella para usted, esto suena como una optimización prematura :) –

+0

Está especificando el color en el espacio de color scRGB: http://en.wikipedia.org/wiki/ScRGB –

Cuestiones relacionadas