Когда вы определяете столбец в сетке WPF, вы можете установить ширину в одно из трех возможных значений:
- фиксированная ширина,
Auto
- столбец станет настолько широким, насколько это необходимо для его дочерних элементов, или
*
(звездочка) занимает все доступное оставшееся пространство
*
начинается с цифры (по умолчанию 1, если номер не указан). Доступное пространство делится между помеченными столбцами пропорционально номеру префикса.
Если у вас есть это определение
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.07*"/>
<ColumnDefinition Width="0.93*"/>
</Grid.ColumnDefinitions>
Первый столбец получит 7% от общего доступного пространства, а второй столбец - 93%. С другой стороны, если у вас было это определение:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.07*"/>
<ColumnDefinition Width="0.14*"/>
</Grid.ColumnDefinitions>
Первый столбец получит 1/3, а второй 2/3 доступного пространства.
В вашем конкретном случае, когда ширина сетки равна 354, а пропорции двух столбцов равны 40 и 314, вы получаете следующие значения ширины столбца:
First column width = 40/(40 + 314)*354 = 40
Second coulmn width = 314/(40 + 314)*354 = 314
Ширина звезды лучше всего использовать, когда ширина сетки не фиксирована. При изменении размера сетки столбцы будут пропорционально масштабироваться в соответствии с шириной звезды. В вашем случае ширина сетки фиксирована, и вы могли бы также легко использовать столбцы фиксированной ширины.
Если вы хотите макет, в котором второй столбец имеет двойную ширину первого, а третий столбец - тройную ширину первого, вам нужно это определение:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
Если общая ширина сетки равна 300, вы получите ширину столбцов 50, 100 и 150. Если общая ширина сетки равна 600, вы получите ширину столбцов 100, 200 и 300. И так далее.