Использование SharedSizeGroup с ColumnSpan в сетке Wpf - PullRequest
3 голосов
/ 03 февраля 2011

Когда я создаю сетку, используя как SharedSizeGroup для столбцов, так и элемент управления охватом столбцов, сетка «ментально» дергается и максимально увеличивает ядро ​​процессора.

Я уверен, что должна быть веская причина, почему это не работает, но я не могу думать об этом! Как еще можно добиться такого размера?

<Grid IsSharedSizeScope="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" SharedSizeGroup="Columns"/>
            <ColumnDefinition Width="Auto" SharedSizeGroup="Columns"/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Label Grid.Column="0">Blah</Label>
        <Label Grid.Column="1">Blah Blah Blah Blah</Label>

        <Label Grid.Row="1" Grid.ColumnSpan="2">ajsgdeererajgsfdg dfg df gdfg djgsad</Label>
    </Grid>

1 Ответ

4 голосов
/ 03 февраля 2011

То, что вы сделали, по сути настроили бесконечную рекурсию в вашем макете.

  • Чтобы разделить размеры столбцов, сначала нужно рассчитать их собственный размер.
  • Затем они могут синхронизироватьсявверх на основе большего (возможно, столбец 1 здесь).
  • После расширения столбца 0 до размера столбца 1 третья метка теперь может использовать больше места в столбце
  • При перемещениистолбцы, пространство, необходимое для столбца 1, становится меньше, что позволяет уменьшить столбец 1 для соответствия новому пространству, требуемому его содержимым.
  • Теперь столбец 1 пересчитывает свой размер (начните сначала с первого шага)

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

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <UniformGrid Rows="1" HorizontalAlignment="Left">
        <Label >Blah</Label>
        <Label >Blah Blah Blah Blah</Label>
    </UniformGrid>

    <Label Grid.Row="1">ajsgdeererajgsfdg dfg df gdfg djgsad</Label>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...