2010-01-20 5 views
2

Je suis assez nouveau sur WPF. Je trouve souvent moi-même du mal à obtenir un tas de contrôles enfants largeur combinée pour correspondre à un conteneur parent donné .. Comme dans ce qui suit:La largeur du contrôle enfant doit correspondre à la largeur du conteneur parent

<ListBox x:Name="BrugereListBox" Grid.Column="0" Grid.Row="3" DataContext="{DynamicResource Brugere}" 
      ItemsSource="{Binding}" 
      PreviewMouseLeftButtonDown="BrugereListBox_MouseLeftButtonDown" 
      PreviewMouseMove="BrugereListBox_PreviewMouseMove" 
      > 
     <ListBox.ItemTemplate > 
      <DataTemplate > 
       <Border BorderBrush="Black" BorderThickness="1" Margin="2"> 
        <StackPanel Orientation="Vertical" IsEnabled="True" 
           PreviewMouseLeftButtonDown="StackPanel_PreviewMouseLeftButtonDown"> 
         <StackPanel Orientation="Horizontal" > 
          <Label>Navn</Label> 
          <TextBox Text="{Binding Name}"></TextBox> 
         </StackPanel> 
         <StackPanel Orientation="Horizontal"> 
          <Label>Password</Label> 
          <TextBox Text="{Binding Password}"></TextBox> 
         </StackPanel> 
         <StackPanel Orientation="Horizontal"> 
          <Label>Email</Label> 
          <TextBox Text="{Binding Email}"></TextBox> 
         </StackPanel> 
        </StackPanel> 
       </Border> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

Dans ce cas, je suis intéressé à obtenir la largeur des enfants de StackPanel:

<StackPanel Orientation="Horizontal" > 
         <Label>Navn</Label> 
         <TextBox Text="{Binding Name}"></TextBox> 
        </StackPanel> 

à la largeur de

<ListBox x:Name="BrugereListBox" 

Toute solution générique à des scénarios comme celui-ci?

+0

duplication possible de [contrôle de bordure wpf pour couvrir la largeur de listboxItem] (http://stackoverflow.com/questions/460812/wpf-border-control-to-span-the-width-of-listboxitem) – Dzyann

Répondre

5

se révèle être dupe de:

wpf border control to span the width of listboxItem

et la réponse donnée là:

Ceci est probablement plus à voir avec les ListBoxItems eux-mêmes ne prenant pas la pleine largeur de la ListBox. Ajoutez l'attribut HorizontalContentAlignment = "Stretch" à votre ListBox et voyez si étire les éléments individuels à remplissez la largeur.

donc changer à:

<ListBox x:Name="BrugereListBox" Grid.Column="0" Grid.Row="3" DataContext="{DynamicResource Brugere}" 
      ItemsSource="{Binding}" 
      PreviewMouseLeftButtonDown="BrugereListBox_MouseLeftButtonDown" 
      PreviewMouseMove="BrugereListBox_PreviewMouseMove" 
      HorizontalContentAlignment="Stretch" 
      > 

mais comme le dit Kent, en utilisant une grille serait mieux à mon avis.

5

Utilisez le panneau de droite et tout ira bien. StackPanel prend ses propres décisions sur sa largeur/hauteur en fonction de son orientation et de ses enfants. Employez un Grid et il prendra juste l'espace donné - pas plus, pas moins.

Questions connexes