wpf
Управление сеткой
Поиск…
Простая сетка
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="abc"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="def"/>
</Grid>
Строки и столбцы определяются с добавлением RowDefinition
и ColumnDefinition
в соответствующие коллекции.
В Grid
может быть небольшое количество детей. Чтобы указать, в какой строке или столбце должен быть помещен Grid.Row
Grid.Column
в прикрепленные свойства, используются Grid.Row
и Grid.Column
. Номера строк и столбцов основаны на нуле. Если ни одна строка или столбец не установлена, по умолчанию она равна 0
.
Дети, помещенные в одну и ту же строку и столбец, рисуются в порядке определения. Таким образом, ребенок, определенный последним, будет рисовать выше определенного ранее ребенка.
Дети сетки, охватывающие несколько строк / столбцов
Используя прикрепленные свойства Grid.RowSpan
и Grid.ColumnSpan
Grid.RowSpan
Grid.ColumnSpan
Grid
могут охватывать несколько строк или столбцов. В следующем примере второй TextBlock
будет охватывать второй и третий столбцы Grid
.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="2" Text="abc"/>
<TextBlock Grid.Column="1" Grid.ColumnSpan="2" Text="def"/>
</Grid>
Синхронизация строк или столбцов нескольких гридов
Ширины строк или ширины столбцов нескольких Grid
могут быть синхронизированы путем установки общей SharedSizeGroup
для строк или столбцов для синхронизации. Затем родительский контроль где - то в дереве над Grid
потребностями сек иметь вложенное свойство Grid.IsSharedSizeScope
установлено значение True
.
<StackPanel Grid.IsSharedSizeScope="True">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="MyGroup"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
[...]
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="MyGroup"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
[...]
</Grid>
</StackPanel>
В этом примере первый столбец обеих Grid
всегда будет иметь одинаковую ширину, также когда один из них изменяется по его содержимому.