1

如何为myOffset中的 s 指定绝对 s ?GradientStopLinearGradientBrush

我有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 像素单位高。当我调整网格大小时,渐变会拉伸,白色区域会变大。如何保持白色区域的高度相同,但拉伸其余的渐变?

白色区域对应于网格中的一行,所以如果有一种方法可以使渐变跨越除第一行之外的每一行,那就可以了。

4

2 回答 2

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

这将以您描述的方式填充背景,只要您在两个矩形之后列出网格的其他内容,它们就会出现在顶部。

当然,这需要您知道网格中的行数和列数。如果这是动态的,您可以使用值转换器获得相同的结果。

于 2009-07-22T15:38:35.277 回答
1

我最终将其拆分Grid为多个Grids以获得我想要的效果。顶部网格有白色背景,中间有渐变,底部有结束颜色。

于 2009-07-22T23:18:31.447 回答