Как правило, по умолчанию используется значение «1 *», поэтому то, что у вас есть выше, эффективно:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.4*" />
<ColumnDefinition Width="0.4*" />
<ColumnDefinition Width="1.0*" />
</Grid.ColumnDefinitions>
Интервал сетки звезд ( GridUnitType.Star ) пропорционально распределяет пространство.В вашем случае у вас есть 1,8 (1,0 + 0,4 + 0,4), поэтому первые два столбца получают 22,2% (0,4 / 1,8) от выделенной им ширины.
Чтобы получить то, что вы хотите, вы можете использовать:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.4*" />
<ColumnDefinition Width="0.4*" />
<ColumnDefinition Width="0.2*" />
</Grid.ColumnDefinitions>
Устанавливает итоговое значение 1,0, поэтому каждый становится процентом.
Обратите внимание, что это даст точно такой же результат , как и при выполнении.:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40*" />
<ColumnDefinition Width="40*" />
<ColumnDefinition Width="20*" />
</Grid.ColumnDefinitions>
Поскольку общие пропорции теперь поделены на общее количество (100), все равно получается 40%, 40%, 20%.