Cela semble être facile mais je suis perplexe. Dans WPF, j'aimerais une zone de texte qui s'étend à la largeur de son parent, mais seulement à une largeur maximale. Le problème est que je veux qu'il reste justifié au sein de son parent. Pour l'étirer, vous devez utiliser HorizontalAlignment = "Stretch", mais le résultat est alors centré. J'ai expérimenté avec HorizontalContentAlignment, mais cela ne semble rien faire.
Comment faire en sorte que cette zone de texte bleue s'agrandisse avec la taille de la fenêtre, qu'elle ait une largeur maximale de 200 pixels et qu'elle soit justifiée à gauche?
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBox Background="Azure" Text="Hello" HorizontalAlignment="Stretch" MaxWidth="200" />
</StackPanel>
</Page>
C'est quoi le truc?
HorizontalAlignment="Stretch"
l'Container
élément. (ps, je réalise que vous avez posé cette question il y a plus de 6 ans.)la source
Les deux réponses données ont fonctionné pour le problème que j'ai déclaré - Merci!
Dans ma vraie application cependant, j'essayais de contraindre un panneau à l'intérieur d'un ScrollViewer et la méthode de Kent ne gérait pas très bien cela pour une raison que je n'ai pas pris la peine de localiser. Fondamentalement, les contrôles pourraient s'étendre au-delà du paramètre MaxWidth et vaincre mon intention.
La technique de Nir fonctionnait bien et n'avait pas de problème avec le ScrollViewer, bien qu'il y ait une chose mineure à surveiller. Vous voulez être sûr que les marges droite et gauche de la zone de texte sont définies sur 0, sinon elles vous gêneront. J'ai également modifié la liaison pour utiliser ViewportWidth au lieu de ActualWidth pour éviter les problèmes lorsque la barre de défilement verticale est apparue.
la source
Vous pouvez l'utiliser pour la largeur de votre DataTemplate:
Assurez-vous que votre racine DataTemplate a Margin = "0" (vous pouvez utiliser un panneau comme racine et définir la marge sur les enfants de cette racine)
la source
Fonctionnellement similaire à la réponse acceptée, mais ne nécessite pas que l'élément parent soit spécifié:
la source
Peut-être que je peux encore aider quelqu'un qui se heurte à cette question, car c'est un problème très ancien.
J'avais aussi besoin de ça et j'ai écrit un comportement pour m'en occuper. Voici donc le comportement:
Ensuite, vous pouvez l'utiliser comme ceci:
Et enfin oublier d'utiliser l'
System.Windows.Interactivity
espace de noms pour utiliser le comportement.la source
j'utiliserais
SharedSizeGroup
la source
Dans mon cas, j'ai dû mettre une zone de texte dans un panneau de pile afin d'étirer la zone de texte sur le côté gauche. Merci au post précédent. Juste pour un exemple, j'ai défini une couleur d'arrière-plan pour voir ce qui se passe lorsque la taille de la fenêtre change.
la source