WPF: как объединить строки в столбце (альтернатива rowspan)?

есть ли способ объединить строки в определенном столбце? Следовательно, чтобы получить что-то вроде этого (в настоящее время я использую rowspan на элементе управления, т. е. изображение, но есть ли лучший способ?)

    --------------------
    |         |--------|
    |         |--------|
    |         |--------|
    |         |--------|
    |         |--------|
    --------------------

Я использую этот код в основном

    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="28" />
        <RowDefinition Height="28" />
        <RowDefinition Height="28" />
        <RowDefinition Height="*" />
        <RowDefinition Height="28" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="124" />
        <ColumnDefinition Width="246*" />
    </Grid.ColumnDefinitions>

что дает мне что-то вроде этого (обратите внимание, что строки также появляются в столбце 0)

    --------------------
    |---------|--------|
    |---------|--------|
    |---------|--------|
    |---------|--------|
    |---------|--------|
    --------------------

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

3 ответов


Это невозможно с Grid управление. Строки проходят через все столбцы, а столбцы проходят через все строки. Как вы обнаружили,RowSpan и ColumnSpan позволяет иметь контрольный диапазон нескольких строк или столбцов соответственно.

еще один потенциальный обходной путь-разместить один Grid другой:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Image/>

    <Grid Grid.Column="1">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
    </Grid>
</Grid>

Как насчет чего-то вроде этого:

            <StackPanel Orientation="Horizontal">
                <Grid Height="100" Width="50"></Grid>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="150" />
                    </Grid.ColumnDefinitions>
                </Grid>
            </StackPanel>

попробуйте использовать прямоугольник для объединения 6 строк.

<Grid>
<Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="28" />
    <RowDefinition Height="28" />
    <RowDefinition Height="28" />
    <RowDefinition Height="*" />
    <RowDefinition Height="28" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="124" />
    <ColumnDefinition Width="246*" />
</Grid.ColumnDefinitions>
<Rectangle Grid.RowSpan="6"/>
</Grid>