2009-07-22 8 views
1

Wie kann ich absolute Offset s für die GradientStop s in meinem LinearGradientBrush s gehen?Absolute GradientStops in LinearGradientBrushes

I eine GridView mit einem LinearGradientBrush als der Hintergrund haben:

<Grid.Background> 
    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
     <LinearGradientBrush.GradientStops> 
      <GradientStop Offset="0" Color="White" /> 
      <GradientStop Offset="0.25" Color="White" /> 
      <GradientStop Offset="0.4" Color="WhiteSmoke" /> 
     </LinearGradientBrush.GradientStops> 
    </LinearGradientBrush> 
</Grid.Background> 

Wenn das Gitter in ihrer Standardgröße ist, wird der weiße Bereich des Gradienten etwa 60 Pixeleinheiten hoch. Wenn ich die Größe des Rasters ändere, dehnt sich der Farbverlauf aus und der weiße Bereich wird größer. Wie kann ich den weißen Bereich auf der gleichen Höhe halten, aber den Rest des Farbverlaufs dehnen?

Der weiße Bereich entspricht einer Zeile im Raster, also, wenn es eine Möglichkeit gibt, den Gradienten jede Zeile außer der ersten zu überspannen, würde das gut funktionieren.

Antwort

1

Ich landete aufteilen Grid in mehrere Grids, um den gewünschten Effekt zu bekommen. Das obere Gitter hatte einen weißen Hintergrund, die Mitte hatte die Steigung und die Unterseite hatte die Endfarbe.

2

Soweit ich weiß, können Sie relative und absolute Gradientenstopps nicht wie beschrieben mischen.

Eine Lösung wie diese sollten Sie jedoch beschreiben für den Fall arbeiten (ich nehme an, Sie drei Spalten und fünf Zeilen haben, also Ihre eigenen Werte ersetzen):

<Rectangle Grid.ColumnSpan="3" Fill="White" /> 
<Rectangle Grid.ColumnSpan="3" Grid.Row="1" Grid.RowSpan="4"> 
    <Rectangle.Fill> 
     <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
      <GradientStop Offset="0" Color="White" /> 
      <GradientStop Offset="0.4" Color="WhiteSmoke" /> 
     </LinearGradientBrush> 
    </Rectangle.Fill> 
</Rectangle> 
<!-- define the rest of the items in your Grid here --> 

Diese den Hintergrund in der Art und Weise füllen Sie Beschreiben Sie, und solange Sie den anderen Inhalt des Rasters nach den zwei Rechtecken auflisten, werden sie oben angezeigt.

Dies erfordert natürlich, dass Sie die Anzahl der Zeilen und Spalten im Raster kennen. Wenn dies dynamisch ist, können Sie möglicherweise das gleiche Ergebnis mit Wertkonvertern erzielen.