Что означает * (звездочка) в приведенном ниже XAML?
<ColumnDefinition Width="0.07*"/>
<Grid Height="100" HorizontalAlignment="Left"
Margin="102,134,0,0"
Name="grid1" VerticalAlignment="Top"
Width="354">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40*" />
<ColumnDefinition Width="314*" />
</Grid.ColumnDefinitions>
</Grid>
Ответы:
Когда вы определяете столбец в сетке WPF, вы можете установить для ширины одно из трех возможных значений:
Auto
- столбец станет настолько широким, насколько это необходимо для размещения его дочерних элементов, или*
(звездочка) занять все доступное оставшееся местоПеред
*
символом стоит номер (по умолчанию - 1, если номер не указан). Доступное пространство делится между столбцами, отмеченными звездочкой, пропорционально номеру префикса.Если у вас есть это определение
Первый столбец получит 7% от общего доступного пространства, а второй столбец получит 93%. С другой стороны, если бы у вас было это определение:
Первый столбец получит 1/3, а второй 2/3 доступного пространства.
В вашем конкретном случае, когда ширина сетки составляет 354, а пропорции двух столбцов - 40 и 314, вы получаете следующие значения ширины столбцов:
Ширину звезды лучше всего использовать, когда ширина сетки не фиксирована. При изменении размера сетки столбцы будут масштабироваться пропорционально, как указано шириной звезды. В вашем случае ширина сетки фиксирована, и вы могли бы так же легко использовать столбцы фиксированной ширины.
Если вам нужен макет, в котором второй столбец в два раза больше ширины первого, а третий столбец в три раза больше ширины первого, вам нужно это определение:
Если общая ширина сетки равна 300, вы получите ширину столбцов 50, 100 и 150. Если общая ширина сетки равна 600, вы получите ширину столбцов 100, 200 и 300. И так далее.
источник
Его отношение 0,07 к любому другому столбцу с шириной звезды - то есть, если другой столбец ColomnDefinition имеет ширину 0,14, то этот столбец вдвое больше ширины = все о рационах
источник
Он создает размеры столбцов с использованием соотношений. Если бы у вас было другое определение, например,
<ColumnDefinition Width="0.03*"/>
первый столбец занимал бы 70% места, а второй - 30%.источник
источник