Je développe une application pour envoyer des commentaires.
En gros, j'essaie de créer un TextBox
pour les commentaires, mais je suis habitué à WinForms MultiLine=true
. J'ai réglé MinLines
sur 3, ce qui est en train de se faire, mais de préférence j'aimerais que l'utilisateur puisse taper n'importe où dans ce bloc - comme pour appuyer sur entrée et faire une sorte de point. Par exemple:
- Item 1 blah
- Item 2 blahlb lahbvl d
Mais pour le moment tout le texte reste sur une ligne.
- Item 1 blah - Item 2 blahb blahb blah
Ces commentaires aideront ensuite à remplir le corps d'un email qui est envoyé. Cela peut être inutile si je ne parviens pas facilement à conserver le même format lors de l'insertion de cette chaîne dans la chaîne du corps de l'e-mail (afin qu'elle ressemble à ce qu'elle est lors de son envoi comme lors de sa saisie).
Puis-je obtenir ce que je recherche ou dois-je le laisser comme tout le texte sur une ligne?
Activez TextWrapping="Wrap"
et AcceptsReturn="True"
sur votre TextBox.
Vous pouvez également vouloir activer AcceptsTab
et SpellCheck.IsEnabled
.
De même, si, comme moi, vous ajoutez des contrôles directement dans XAML (sans utiliser l'éditeur), vous pourriez être frustré qu'il ne s'étire pas à la hauteur disponible, même après la définition de ces deux propriétés.
Pour étirer la zone de texte, définissez le Height="Auto"
.
PDATE:
Rétrospectivement, je pense que cela a dû être nécessaire grâce à un style par défaut pour les zones de texte spécifiant la hauteur à une certaine norme pour l'application quelque part dans les ressources de l'application. Cela vaut la peine de vérifier si cela vous a aidé.
Voici l'exemple XAML
qui permettra à TextBox
d'accepter du texte multiligne et utilise ses propres barres de défilement:
<TextBox
Height="200"
Width="500"
TextWrapping="Wrap"
AcceptsReturn="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"/>
Contrairement à @Andre Luus, le réglage de Height="Auto"
ne rendra pas la TextBox
étendue. La solution que j'ai trouvée consistait à définir VerticalAlignment="Stretch"
La seule propriété correspondant dans WPF à la propriété Winforms TextBox.Multiline = true
est TextBox.AcceptsReturn = true
.
<TextBox AcceptsReturn="True" ...... />
Tous les autres paramètres, tels que VerticalAlignement
, WordWrap
etc., ne contrôlent que la façon dont la zone de texte interagit dans l'interface utilisateur, mais n'affectent pas le comportement Multiline
.