2011-09-14 2 views
9

Cosa significa * in XAML. Ho una griglia di larghezza 400. E ho diviso la griglia in 3 colonne. Cosa significa * .4? Ho pensato che fosse il 40% dello spazio disponibile. quindi pensavo che le prime 2 colonne otterrebbero il 40% percento ciascuna e il resto sarà preso dalla terza colonna. ma sembra, la terza colonna sta prendendo il 60% e le prime due stanno ottenendo il 20% ciascuna. Come funziona?Cosa significa * in XAML

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

enter image description here

risposta

12

In sostanza, il valore predefinito è "1 *", quindi quello che hai sopra è efficace:

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

La spaziatura della griglia Stella (GridUnitType.Star) distribuisce proporzionalmente spazio. Nel tuo caso, hai un totale di 1,8 (1,0 + 0,4 + 0,4), quindi le prime due colonne ottengono ciascuna il 22,2% (0,4/1,8) della larghezza assegnata a loro.

per ottenere ciò che si desidera, è possibile utilizzare:

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

Questo imposta il totale a 1,0, in modo che ogni diventa una percentuale.

Si noti che questo darà esattamente lo stesso risultato come fare:

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

Dal momento che le proporzioni complessive sono divisi per il totale (100) ora, ancora dando il 40%, 40%, 20% .