¿Cuál es el significado de * (asterisco) en XAML ColumnDefinition?

106

¿Cuál es el significado de * (asterisco) en el XAML a continuación?

<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>
Shashank
fuente
si el ancho de mi segunda columna es el doble de la primera y el ancho de la tercera columna es el triple del primero, entonces, ¿cómo puedo usar Astrik
Shashank

Respuestas:

168

Cuando define una columna en una cuadrícula de WPF, puede establecer el ancho en uno de los tres valores posibles:

  • Un ancho fijo,
  • Auto - la columna será tan ancha como sea necesario para adaptarse a sus hijos, o
  • * (estrella) ocupa cualquier espacio restante disponible

El *es prefijado por un número (por defecto es 1 si no se especifica ningún número). El espacio disponible se divide entre las columnas destacadas en proporción al número de prefijo.

Si tienes esta definición

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

La primera columna obtendrá el 7% del espacio total disponible y la segunda columna obtendrá el 93%. Por otro lado, si tuvieras esta definición:

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

La primera columna obtendría 1/3 y la segunda 2/3 del espacio disponible.


En su caso específico, donde el ancho de la cuadrícula es 354 y las proporciones de las dos columnas son 40 y 314, obtiene los siguientes anchos de columna:

Ancho de la primera columna = 40 / (40 + 314) * 354 = 40
Segundo ancho de canal = 314 / (40 + 314) * 354 = 314

El ancho de la estrella se usa mejor cuando el ancho de la cuadrícula no es fijo. Cuando se cambia el tamaño de la cuadrícula, las columnas se escalarán proporcionalmente según lo especificado por el ancho de las estrellas. En su caso, el ancho de la cuadrícula es fijo y podría haber usado columnas de ancho fijo con la misma facilidad.

Si desea un diseño donde la segunda columna tiene el doble de ancho que la primera y la tercera columna es el triple del ancho de la primera, necesita esta definición:

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

Si el ancho total de la cuadrícula es 300 obtienes anchos de columna 50, 100 y 150. Si el ancho total de la cuadrícula es 600 obtienes anchos de columna 100, 200 y 300. Y así sucesivamente.

Martin Liversage
fuente
3

Su relación de 0.07 con cualquier otra columna de ancho de estrella, es decir, si otra ColomnDefinition tiene un Ancho de 0.14, entonces esa columna es el doble del ancho = todo se trata de raciones

Dean Chalk
fuente
1

Crea tamaños de columna usando proporciones. Si tuviera otra definición como <ColumnDefinition Width="0.03*"/>la primera columna ocuparía el 70% del espacio y la segunda ocuparía el 30%.

Jakub
fuente
0

[..] un valor que se expresa como una proporción ponderada del espacio disponible.

media pensión
fuente