2010-10-27 12 views
23

Próbuję zastosować tło gradientowe tylko do jednego wiersza w siatce Xlight Silverlight, którą utworzyłem.Stosowanie koloru tła do całego wiersza tabeli w XAML Silverlight

mogę zrobić coś takiego bez żadnych problemów:

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

Niestety dotyczy to gradient do całej sieci.

Wygląda na to, że nie można zastosować gradientu (lub nawet koloru) do definicji pojedynczego wiersza w siatce. Czy to możliwe?

Dzięki!

Odpowiedz

46

Użyj Border, a następnie użyj Grid.Row i Grid.ColumnSpan, aby umieścić go w określonym wierszu Grid, który chcesz.

<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

You da człowiek , człowiek. –

+0

Cieszę się, że mogę pomóc. – Donut

+0

Dzięki! Zastosowałem to do podobnej sytuacji, w której miałem tło obrazkowe, które miało być zastosowane do więcej niż jednego wiersza, ale wiersze zostały zautomatyzowane, więc użycie obrazu nie miało go zmniejszyć, granica działa idealnie! – jv42

0

Jeśli chcesz symulować dwa kolory w kolejności pionowej, możesz również użyć właściwości Przesunięcie. Jeśli te dwa ustawione na tę samą wartość, można uzyskać tę symulację:

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

można zrobić jeszcze więcej :)

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

Powiązane problemy