121 votes

Que signifie * (astérisque) dans une définition de colonne WPF?

Quelle est la signification de * (astérisque) dans le XAML ci-dessous?

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

186voto

Martin Liversage Points 43712

Lorsque vous définissez une colonne dans un WPF grille, vous pouvez définir la largeur de l'une des trois valeurs possibles:

  • Une largeur fixe,
  • Auto ce qui signifie étendre à la taille du contenu, ou
  • * (star) de prendre tout l'espace disponible

L' * est préfixé par un certain nombre (la valeur par défaut est 1 si aucun nombre n'est spécifié). L'espace disponible est réparti entre le chef étoilé colonnes en proportion le 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, vous bénéficiez de 7% de l'espace total disponible et la deuxième colonne de 93%. D'autre part, si vous avez eu cette définition:

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

La première colonne obtenir 1/3 et la deuxième 2/3 de l'espace disponible.


Dans votre cas particulier où la largeur de la grille est de 354 et les proportions des deux colonnes de 40 ans et 314, vous recevrez les largeurs de colonne:

D'abord la largeur de la colonne = 40/(40 + 314)*354 = 40
Deuxième coulmn largeur = 314/(40 + 314)*354 = 314

L'étoile la largeur est meilleur lorsque la largeur de la grille n'est pas fixe. Lorsque la grille est redimensionné les colonnes seront ensuite mis à l'échelle proportionnellement tel que spécifié par l'étoile largeurs. Dans votre cas, la largeur de la grille est fixe et vous pouvez tout aussi facilement utiliser des colonnes de largeur fixe.

Si vous souhaitez une mise en page où la deuxième colonne est le double de la largeur de la première et de 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 les largeurs de colonne de 50, 100 et 150. Si la largeur totale de la grille est de 600, vous obtenez des largeurs de colonnes 100, 200 et 300. Et ainsi de suite.

3voto

Dean Chalk Points 7935

Son rapport 0,07 à n'importe quelle autre colonne de largeur étoilée - c'est-à-dire si une autre ColomnDefinition a une largeur de 0,14, cette colonne est le double de la largeur = c'est tout sur les rations

2voto

Jakub Points 383

Il crée des tailles de colonne à l'aide de ratios. Si vous aviez une autre définition comme <ColumnDefinition Width="0.03*"/> la première colonne occuperait 70% de l’espace et la seconde 30%.

0voto

H.B. Points 76352

[..] une valeur exprimée en proportion pondérée de l'espace disponible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X