Когда вы определяете столбец в сетке 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, вы получаете следующие значения ширины столбцов:
Ширина первого столбца = 40 / (40 + 314) * 354 = 40
Ширина второго слоя = 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. И так далее.