2009-07-22 3 views
1

LinearGradientBrushGradientStopの絶対値をOffsetに指定するにはどうすればよいですか?LinearGradientBrushesの絶対GradientStops

I背景としてLinearGradientBrushGridViewた:グリッドがデフォルトのサイズで

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

である場合、勾配の白い領域は、約60画素単位トールです。グリッドのサイズを変更すると、グラデーションが伸び、白い部分が大きくなります。白い部分は同じ高さに保つことができますが、残りの部分は伸ばすことができますか?

白い部分はグリッドの1つの行に対応しています。したがって、グラデーションをすべての行に渡して最初の行に跨る方法があれば、うまくいくはずです。

答えて

1

Gridを複数のGridsに分割して、私が望む効果を得ました。上部のグリッドは白い背景を持ち、中央はグラデーションを持ち、底は終わりの色を持っていました。

2

私が知る限り、説明したように、相対的なグラデーションストップと絶対的なグラデーションストップを混在させることはできません。

このようなソリューションは、(私はあなたが3つの列と5行を持っていると仮定し、その独自の値に置き換えてください)しかし、あなたが記述する場合のために働く必要があります。

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

これは方法あなたの中にバックグラウンドを記入しますグリッドの他の内容を2つの矩形の後にリストする限り、それらは上に表示されます。

もちろん、グリッド内の行と列の数を知る必要があります。動的な場合は、値コンバーターを使用して同じ結果を得ることができます。