如何为Offset
中的GradientStop
指定绝对LinearGradientBrush
?
我有一个GridView
,背景为LinearGradientBrush
:
<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像素单位。当我调整网格大小时,渐变会拉伸,白色区域会变大。如何保持白色区域的高度相同,但是拉伸其余的渐变?
白色区域对应于网格中的一行,因此如果有一种方法可以使渐变跨越每一行而不是第一行,那就可以正常工作。
答案 0 :(得分:2)
据我所知,你不能在描述中混合相对和绝对渐变停止。
这样的解决方案适用于您描述的情况(我假设您有三列五行,因此请替换您自己的值):
<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 -->
这将以您描述的方式填充背景,只要您在两个矩形之后列出网格的其他内容,它们就会显示在顶部。
当然,这需要您知道网格中的行数和列数。如果这是动态的,您可以使用值转换器获得相同的结果。
答案 1 :(得分:1)
我最终将Grid
拆分为多个Grids
以获得我想要的效果。顶部网格具有白色背景,中间具有渐变,底部具有最终颜色。