Qual è il significato di * (asterisco) in XAML ColumnDefinition?


106

Qual è il significato di * (asterisco) nel codice XAML di seguito?

<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>

se la larghezza della mia seconda colonna è il doppio della prima e la larghezza della terza colonna è tripla della prima, allora come posso usare Astrik
Shashank

Risposte:


168

Quando si definisce una colonna in una griglia WPF è possibile impostare la larghezza su uno dei tre valori possibili:

  • Una larghezza fissa,
  • Auto - la colonna diventerà larga quanto necessario per adattarsi ai suoi figli, o
  • * (stella) occupa lo spazio rimanente disponibile

Il *è preceduto da un numero (il valore predefinito è 1 se non viene specificato alcun numero). Lo spazio disponibile viene suddiviso tra le colonne contrassegnate da una stella in proporzione al numero del prefisso.

Se hai questa definizione

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="0.07*"/>
  <ColumnDefinition Width="0.93*"/>
</Grid.ColumnDefinitions>

La prima colonna otterrà il 7% dello spazio totale disponibile e la seconda colonna otterrà il 93%. D'altra parte se avessi questa definizione:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="0.07*"/>
  <ColumnDefinition Width="0.14*"/>
</Grid.ColumnDefinitions>

La prima colonna otterrebbe 1/3 e la seconda 2/3 dello spazio disponibile.


Nel tuo caso specifico in cui la larghezza della griglia è 354 e le proporzioni delle due colonne sono 40 e 314 ottieni le seguenti larghezze di colonna:

Larghezza prima colonna = 40 / (40 + 314) * 354 = 40
Larghezza seconda bobina = 314 / (40 + 314) * 354 = 314

La larghezza della stella viene utilizzata al meglio quando la larghezza della griglia non è fissa. Quando la griglia viene ridimensionata, le colonne verranno ridimensionate proporzionalmente come specificato dalle larghezze delle stelle. Nel tuo caso la larghezza della griglia è fissa e potresti altrettanto facilmente utilizzare colonne a larghezza fissa.

Se vuoi un layout in cui la seconda colonna è il doppio della larghezza della prima e la terza colonna è il triplo della larghezza della prima, hai bisogno di questa definizione:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="*"/>
  <ColumnDefinition Width="2*"/>
  <ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>

Se la larghezza totale della griglia è 300, si ottengono larghezze di colonna 50, 100 e 150. Se la larghezza totale della griglia è 600, si ottengono larghezze di colonna 100, 200 e 300. E così via.


3

Il suo rapporto di 0,07 rispetto a qualsiasi altra colonna con larghezza di stella, ovvero se un'altra ColomnDefinition ha una larghezza di 0,14, quella colonna è il doppio della larghezza = è tutta una questione di razioni


1

Crea le dimensioni delle colonne utilizzando i rapporti. Se avessi un'altra definizione come <ColumnDefinition Width="0.03*"/>la prima colonna occuperebbe il 70% dello spazio e la seconda occuperebbe il 30%.


0

[..] un valore espresso come proporzione ponderata dello spazio disponibile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.