Ответ 1
Когда вы определяете столбец в сетке 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. И так далее.