Вертикальный и горизонтальный GridSplitter

У меня есть сетка, и я пытаюсь поставить вертикальные и горизонтальные GridSplitters. Это моя основная сетка, и я бы хотел, чтобы она была как можно более плавной.

На моем втором определении я получаю "Установщик отсутствующего Grid.Column для не первого ребенка"

Я нашел множество документации по реализации одного или другого. Я не нашел ничего, что подсказывало бы, что я могу сделать оба. Но наша индустрия состоит из людей, желающих расширить функциональность.

Вот мой XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="50*"></ColumnDefinition>
        <ColumnDefinition Width="5"></ColumnDefinition>
        <ColumnDefinition Width="50*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="50*"></RowDefinition>
        <RowDefinition Height="5"></RowDefinition>
        <RowDefinition Height="50*"></RowDefinition>
    </Grid.RowDefinitions>
    <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Stretch"></GridSplitter>
    <GridSplitter  Grid.Row="1" Height="5" HorizontalAlignment="Stretch"></GridSplitter>

1 ответ

Вам нужно установить Grid.Column для разделителей сетки, а также вам нужно

HorizontalAlignment="Stretch"  -> for horizontal splitter
VerticalAlignment="Stretch"  -> for Vertical splitter

так ваш код выглядит как -

<GridSplitter Grid.Column="1" Width="5" Grid.RowSpan ="3" VerticalAlignment="Stretch"></GridSplitter>
<GridSplitter  Grid.Row="1" Height="5" Grid.ColumnSpan ="3" HorizontalAlignment="Stretch"></GridSplitter>

ResizeHehavior="PreviousAndNext"необходимо добавить, чтобы обеспечить правильную настройку столбцов и строк. Ниже мой образец.

    <Grid ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="50*"></ColumnDefinition>
        <ColumnDefinition Width="5"></ColumnDefinition>
        <ColumnDefinition Width="50*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="50*"></RowDefinition>
        <RowDefinition Height="5"></RowDefinition>
        <RowDefinition Height="50*"></RowDefinition>
    </Grid.RowDefinitions>
    <GridSplitter Grid.Column="1" Width="5" Grid.RowSpan ="3" 
                  VerticalAlignment="Stretch" ResizeBehavior="PreviousAndNext">
    </GridSplitter>
    <GridSplitter  Grid.Row="1" Height="5" Grid.ColumnSpan ="3" 
                   HorizontalAlignment="Stretch" ResizeBehavior="PreviousAndNext">            
    </GridSplitter>
    <Button Grid.Row="0" Grid.Column="0" Content="1,1" FontSize="30"/>
    <Button Grid.Row="2" Grid.Column="0" Content="3,1" FontSize="30"/>
    <Button Grid.Row="0" Grid.Column="2" Content="1,3" FontSize="30"/>
    <Button Grid.Row="2" Grid.Column="2" Content="3,3" FontSize="30"/>
</Grid>

Вы можете установить направление следующим образом:

<GridSplitter ResizeDirection=”Rows”/>

или же

<GridSplitter ResizeDirection=”Columns”/>

Однако, когда вы устанавливаете выравнивание в горизонтальное или вертикальное положение, по умолчанию ResizeDirection=”Auto”, скорее всего, будет выбрано направление изменения размера фитинга.

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