Абсолютные градиентные вершины в линейных градиентных кустах

Как я могу указать абсолютный 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 пикселей. Когда я изменяю размер сетки, градиент растягивается и белая область становится больше. Как я могу сохранить белую область такой же высоты, но растянуть остальную часть градиента?

Белая область соответствует одной строке в сетке, поэтому, если есть способ сделать градиентный интервал каждой строкой, кроме первой, это будет работать просто отлично.

2 ответа

Решение

Я в конечном итоге разделить Grid в несколько Grids чтобы получить эффект, который я хотел. Верхняя сетка имела белый фон, средняя имела градиент, а нижняя имела конечный цвет.

Насколько я знаю, вы не можете смешивать относительные и абсолютные градиентные остановки, как вы описываете.

Однако подобное решение должно работать для описанного вами случая (я предполагаю, что у вас есть три столбца и пять строк, поэтому подставьте свои собственные значения):

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

Это заполнит фон так, как вы описываете, и, пока вы перечисляете другое содержимое сетки после двух прямоугольников, они будут отображаться сверху.

Конечно, для этого необходимо знать количество строк и столбцов в сетке. Если это динамика, вы можете достичь того же результата, используя преобразователи значений.

Другие вопросы по тегам