2010-10-27 10 views
23

Estoy tratando de aplicar un fondo de degradado a una sola fila en una cuadrícula de XAML Silverlight que he creado.Aplicar un color de fondo a una fila de cuadrícula completa en XAML Silverlight

puedo hacer algo como esto sin ningún problema:

<Grid> 
    <Grid.Background> 
     <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
      <GradientStop Color="Black" Offset="0" /> 
      <GradientStop Color="White" Offset="1" /> 
     </LinearGradientBrush> 
    </Grid.Background> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 

    <!-- components and various stuffs --> 
</Grid> 

Desafortunadamente esto se aplica el gradiente de toda la red.

Parece que no puedo aplicar un degradado (o incluso un color) a una definición de fila individual en la cuadrícula. ¿Es posible?

Gracias!

Respuesta

46

Utilice Border, y luego use Grid.Row y Grid.ColumnSpan para ponerlo en la fila específica del Grid que desee.

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 

    <Border Grid.Row="1" Grid.ColumnSpan="2"> 
     <Border.Background> 
     <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
      <GradientStop Color="Black" Offset="0" /> 
      <GradientStop Color="White" Offset="1" /> 
     </LinearGradientBrush> 
     </Border.Background> 
    </Border> 

    <!-- other controls in the grid --> 
</Grid> 
+1

Se da man hombre –

+0

Me alegro de poder ayudar. – Donut

+0

¡Gracias! Apliqué esto a un caso similar en el que tenía un fondo de imagen que debía aplicarse a más de una fila, pero las filas eran autosinicadas, así que usar una Imagen no iba a cortar, ¡el Borde funciona perfectamente! – jv42

0

Si desea simular dos colores en orden vertical, también puede usar la propiedad Desplazamiento. Si establece estos dos en el mismo valor, se obtiene esta simulación:

<Border.Background> 
 
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
 
       <GradientStop Color="Green" Offset="0.366" /> 
 
       <GradientStop Color="Red" Offset="0.366" /> 
 
      </LinearGradientBrush> 
 
</Border.Background>

Puede hacer aún más :)

<Border.Background> 
 
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
 
    <GradientStop Color="Green" Offset="0.3" /> 
 
    <GradientStop Color="Red" Offset="0.3" /> 
 
    <GradientStop Color="Red" Offset="0.7" /> 
 
    <GradientStop Color="Yellow" Offset="0.7" /> 
 
    <GradientStop Color="Yellow" Offset="0.9" /> 
 
    <GradientStop Color="Blue" Offset="0.9" /> 
 
    </LinearGradientBrush> 
 
</Border.Background>

Cuestiones relacionadas