131 votes

Comment mettre une nouvelle ligne dans un contrôle TextBlock de wpf ?

Je récupère du texte à partir d'un fichier XML, et j'aimerais insérer de nouvelles lignes qui sont interprétées par le rendu du bloc de texte comme de nouvelles lignes.

J'ai essayé :

<data>Foo bar baz \n baz bar</data>

Mais les données sont toujours affichées sans la nouvelle ligne. J'ai défini le contenu de <data> par l'intermédiaire de la .Text via C#.

Que dois-je mettre dans le XML pour qu'il rende la nouvelle ligne dans l'interface graphique ?

J'ai essayé quelque chose comme cela en définissant manuellement le texte dans le XAML :

<TextBlock Margin="0 15 0 0" Width="600">
There &#10;
is a new line.
</TextBlock>

Et bien que le caractère encodé n'apparaisse pas dans l'interface graphique, il ne me donne pas non plus une nouvelle ligne.

0voto

addmoss Points 101

Définir une propriété qui remplace \n con System.Environment.Newline sur le plateau :

private string _data;
public string Data
{
    get => _data; 
    set {
        _data = value.Replace("\\n", System.Environment.NewLine);
        OnPropertyChanged();
    }
}

Liez votre zone de texte à la propriété :

<TextBox Text="{Binding Data}" />

Lire les données xml et les assigner à la propriété

Data = ...data fetched from xml...

Tous \n dans les données xml est affichée sous la forme d'une nouvelle ligne dans la boîte de texte.

0voto

luka Points 390

À partir de la suggestion de @Ketobomb, pourriez-vous utiliser ceci dans votre style :

 <Style x:Key="TextBlockTestStyle" TargetType="TextBlock">       
    <Setter Property="Text" Value="line1!&#x0a;Line2&#x0a;Line3"/>
 </Setter>

et l'utiliser de cette manière :

 <TextBlock x:Name="TextBlockTest" Style="{StaticResource TextBlockTestStyle}"/>

-2voto

Dave Points 37

Vous devez vous assurer que cette option est activée dans le bloc de texte :

AcceptsReturn="True"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X