J’ai un listbox WPF qui affiche des messages. Il contient un avatar à gauche et le nom d’utilisateur et le message sont empilés verticalement à droite de l’avatar. La mise en page est correcte jusqu’à ce que le texte du message soit renvoyé à la ligne, mais au lieu de cela, une barre de défilement horizontale apparaît dans la liste.
J’ai googlé et trouvé des solutions à des problèmes similaires, mais aucun n’a fonctionné.
Le contenu de TextBlock
peut être TextBlock
à l’aide de la propriété TextWrapping
. Au lieu de StackPanel
, utilisez DockPanel
/ Grid
. ScrollViewer.HorizontalScrollBarVisibility
chose: définissez la propriété ScrollViewer.HorizontalScrollBarVisibility
sur la valeur Disabled
pour le ListBox
.
Mis à jour Hidden
à Disabled
basé sur le commentaire de Matt. Merci Matt.
Le problème peut ne pas être situé dans le contrôle ListBox. Le TextBlock ne retourne pas, si l’un des contrôles parents fournit suffisamment d’espace, pour qu’il n’ait pas besoin de s’emballer. Cela peut être dû à un contrôle ScrollViewer.
Si vous souhaitez empêcher le développement de TextBlock et que vous souhaitez simplement qu’il tienne dans la taille de la liste, vous devez définir sa largeur de manière explicite.
Pour le changer dynamicment, cela ne signifie pas une valeur de correctif, mais vous devez le lier à son propre élément parent dans l’arborescence visuelle. Vous pouvez avoir quelque chose comme ça:
Si cela ne fonctionne pas, essayez de trouver les éléments appropriés (qui doivent être liés à quoi) avec l’ arborescence Visual Live dans Visual Studio.