WrapPanel non enveloppant dans un StackPanel avec une orientation horizontale
-
06-07-2019 - |
Question
Les libellés de l'exemple ci-dessous (WPF / XAML) défilent à l'écran, aucun retour à la ligne ne se produit. Supprimer l'orientation fonctionne, mais ne fournit pas les fonctionnalités nécessaires / look & amp; ressentir. Des idées sur la manière de faire en sorte que le WrapPanel
soit ajusté à la taille actuelle du StackPanel
?
<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>
La solution
Vous pouvez lier le MaxWidth
du WrapPanel
au StackPanel
du ActualWidth
.
Autres conseils
Ce que vous faites n'est pas possible à cause de l'algorithme utilisé par StackPanel
lors de la mise en page horizontale. Il va essentiellement demander à chaque élément enfant quelle taille il souhaite avoir et quelle que soit l'espace demandé, il le laissera.
Vous devez soit:
- Définissez un
Width
ou unMaxWidth
sur leWrapPanel
. - Utilisez un
WrapPanel
comme panneau externe à la place duStackPanel
.