В сетке WPF Width = "*"
или Height = "*"
означает пропорциональная калибровка.
Например: чтобы присвоить 30% столбцу 1 и 70% столбцу 2 -
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="7*" />
И то же самое для строк -
<RowDefinition Height="3*" />
<RowDefinition Height="7*" />
Числа не обязательно должны быть целыми.
Если ширина для RowDefinition (Высота для ColumnDefinition) опущена, подразумевается 1 *.
В этом примере столбец 1 в 1,5 раза шире, чем столбец 2 -
<ColumnDefinition Width="1.5*" />
<ColumnDefinition />
Вы можете комбинировать автоподгонку и фиксированную ширину с * (пропорциональной) шириной; в этом случае столбцы * распределяются по остатку после вычисления автоматической подгонки и фиксированной ширины -
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" /> <!-- Auto-fit to content, 'Hi' -->
<ColumnDefinition Width="50.5" /> <!-- Fixed width: 50.5 device units) -->
<ColumnDefinition Width="69*" /> <!-- Take 69% of remainder -->
<ColumnDefinition Width="31*"/> <!-- Take 31% of remainder -->
</Grid.ColumnDefinitions>
<TextBlock Text="Hi" Grid.Column="0" />
Если у вас есть 2 таких столбца:
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="*"/>
, это означает, что первый столбец в 10 раз шире второго. Это как сказать «10 частей столбца 1 и 1 часть столбца 2»
. Самое замечательное в этом то, что ваши столбцы будут пропорционально изменять размер. Другие варианты:
//Take up as much space as the contents of the column need
<ColumnDefinition Width="Auto"/>
//Fixed width: 100 pixels
<ColumnDefinition Width="100"/>
Надеюсь, что это поможет!
Кроме того, вы можете опустить "*", если это элемент размера блока. Таким образом, используя пример кода Пунинштейна, это будет просто:
<ColumnDefinition Width="10*/>
<ColumnDefinition/>