Що означає * (зірочка) у XAML ColumnDefinition?


106

Яке значення * (зірочка) у 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>

якщо ширина мого другого стовпчика подвійна першої та третьої ширини стовпця - це потрійна першої, то як я можу використовувати Astrik
Shashank

Відповіді:


168

Коли ви визначаєте стовпець у сітці 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. І так далі.


3

Його коефіцієнт 0,07 до будь-якого іншого зіркового ширини - тобто якщо інший ColomnDefinition має ширину 0,14, то цей стовпець вдвічі ширший = його все про раціони


1

Він створює розміри стовпців, використовуючи співвідношення. Якби у вас було інше визначення, наприклад, <ColumnDefinition Width="0.03*"/>перший стовпець займав би 70% місця, а другий займав би 30%.


0

[..] значення, яке виражається як зважена частка наявного простору.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.