web-dev-qa-db-fra.com

Comment définir la largeur à 100% dans WPF

Existe-t-il un moyen de dire à un composant [~ # ~] wpf [~ # ~] de prendre 100% de l'espace disponible?

Comme

width: 100%;  

en CSS

J'ai ce XAML et je ne sais pas comment forcer Grid à prendre 100% de largeur.

<ListBox Name="lstConnections">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <Grid Background="LightPink">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="Auto"/>
          <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Path=User}" Margin="4"></TextBlock>
        <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=Password}" Margin="4"></TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding Path=Host}" Margin="4"></TextBlock>
      </Grid>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

Le résultat ressemble à

alt text http://foto.darth.cz/pictures/wpf_width.jpg

Je l'ai fait rose donc c'est évident combien d'espace cela prend. Je dois faire la grille rose 100% largeur.

63
Jakub Arnold

C'est le conteneur du Grid qui impose sa largeur. Dans ce cas, il s’agit d’un ListBoxItem, aligné à gauche par défaut. Vous pouvez le configurer pour s'étirer comme suit:

<ListBox>
    <!-- other XAML omitted, you just need to add the following bit -->
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="HorizontalAlignment" Value="Stretch"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>
85
Kent Boogaart

Vous pouvez utiliser HorizontalContentAlignment="Stretch" comme suit:

<ListBox HorizontalContentAlignment="Stretch"/>
54
Giovanny Farto M.