2011-09-14 16 views
9

Qué significa * en XAML. Tengo una grilla de ancho 400. Y dividí la grilla en 3 columnas. ¿Qué significa * .4? Pensé que era el 40% del espacio disponible. así que pensé que las primeras 2 columnas obtendrían un 40% por ciento cada una y el resto lo tomaría la tercera columna. pero parece que la tercera columna toma el 60% y las dos primeras obtienen el 20% cada una. ¿Cómo funciona esto?Qué significa * en XAML

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width=".4*"/> 
     <ColumnDefinition Width=".4*"/> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 
</Grid> 

enter image description here

Respuesta

12

Básicamente, el valor predeterminado es "1 *", así que lo que tienes arriba es efectiva:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="0.4*" /> 
    <ColumnDefinition Width="0.4*" /> 
    <ColumnDefinition Width="1.0*" /> 
</Grid.ColumnDefinitions> 

El intervalo de la rejilla de la estrella (GridUnitType.Star) distribuye proporcionalmente el espacio. En su caso, tiene un total de 1.8 (1.0 + 0.4 + 0.4), por lo que las dos primeras columnas obtienen un 22.2% (0.4/1.8) del ancho asignado a ellas.

para conseguir lo que desea, puede utilizar:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="0.4*" /> 
    <ColumnDefinition Width="0.4*" /> 
    <ColumnDefinition Width="0.2*" /> 
</Grid.ColumnDefinitions> 

Ajusta el total a 1,0, por lo que cada uno se convierte en porcentaje.

Tenga en cuenta que esto dará exactamente el mismo resultado como hacer:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="40*" /> 
    <ColumnDefinition Width="40*" /> 
    <ColumnDefinition Width="20*" /> 
</Grid.ColumnDefinitions> 

Desde las proporciones totales se dividen por el total (100) ahora, que todavía da 40%, 40%, 20% .