Lorsque vous définissez une colonne dans une grille WPF, vous pouvez définir la largeur sur l'une des trois valeurs possibles:
- Une largeur fixe,
Auto
- la colonne deviendra aussi large que nécessaire pour s'adapter à ses enfants, ou
*
(étoile) occupe tout l'espace restant disponible
Le *
est précédé d'un nombre (la valeur par défaut est 1 si aucun nombre n'est spécifié). L'espace disponible est divisé entre les colonnes étoilées proportionnellement au numéro de préfixe.
Si vous avez cette définition
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.07*"/>
<ColumnDefinition Width="0.93*"/>
</Grid.ColumnDefinitions>
La première colonne obtiendra 7% de l'espace total disponible et la deuxième colonne 93%. Par contre si vous aviez cette définition:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.07*"/>
<ColumnDefinition Width="0.14*"/>
</Grid.ColumnDefinitions>
La première colonne obtiendrait 1/3 et la seconde 2/3 de l'espace disponible.
Dans votre cas spécifique où la largeur de la grille est de 354 et les proportions des deux colonnes sont de 40 et 314, vous obtenez les largeurs de colonne suivantes:
Largeur de la première colonne = 40 / (40 + 314) * 354 = 40
Deuxième largeur de coulmn = 314 / (40 + 314) * 354 = 314
La largeur de l'étoile est mieux utilisée lorsque la largeur de la grille n'est pas fixe. Lorsque la grille est redimensionnée, les colonnes seront alors mises à l'échelle proportionnellement comme spécifié par les largeurs d'étoile. Dans votre cas, la largeur de la grille est fixe et vous pourriez tout aussi bien avoir utilisé des colonnes à largeur fixe.
Si vous voulez une mise en page où la deuxième colonne est le double de la largeur de la première et la troisième colonne est le triple de la largeur de la première, vous avez besoin de cette définition:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
Si la largeur totale de la grille est de 300, vous obtenez des largeurs de colonne de 50, 100 et 150. Si la largeur totale de la grille est de 600, vous obtenez des largeurs de colonne de 100, 200 et 300. Et ainsi de suite.