2009-10-26 5 views
11

Les étiquettes de l'exemple ci-dessous (WPF/XAML) ne font que défiler sur l'écran, aucun retour n'a lieu. Retrait de l'orientation fonctionne, mais ne fournit pas la fonctionnalité nécessaire/look & sentir. Des idées comment faire le WrapPanel envelopper à la taille actuelle de la StackPanel?WrapPanel ne s'enroulant pas dans un StackPanel avec orientation horizontale

<Window Height="300" Width="600"> 
    <StackPanel Orientation="Horizontal"> 
     <WrapPanel> 
      <Label Height="28" Name="label1" Width="120">First Name</Label> 
      <Label Height="28" Name="label2" Width="120">John</Label> 
      <Label Height="28" Name="label3" Width="120">Last Name</Label> 
      <Label Height="28" Name="label4" Width="120">Smith</Label> 
      <!-- ...more labels!... --> 
     </WrapPanel> 
     <!-- ...other controls/panels... --> 
    </StackPanel> 
</Window> 

Répondre

21

Vous pouvez lier s ActualWidth 's MaxWidth au StackPanel du WrapPanel.

+0

Quand vous dites lier, il semble que cela se produise automatiquement? Comment ferait-on cela? – derGral

+4

Je n'ai pas essayé ceci, mais fondamentalement: NotDan

+0

Cela semble fonctionner; Merci! Le problème est qu'il y a d'autres choses dans le stackpanel et leurs largeurs ne sont pas prises en compte. Des idées pour gérer ça? – derGral

6

Ce que vous faites est impossible en raison de l'algorithme qui utilise StackPanel lorsque vous effectuez la mise en page horizontale. Il va essentiellement demander à chaque élément enfant de quelle taille il veut être et quel que soit l'espace qu'il demande, il va le donner.

Vous devez soit:

  1. Définir un Width ou MaxWidth sur le WrapPanel.
  2. Utilisez un WrapPanel comme panneau externe à la place du StackPanel.
Questions connexes