2010-01-22 7 views
6

Je suis un débutant avec wpf, ce que je veux afficher le texte dans une ligne dans le bloc de texte wpf. par exemple .:Comment afficher le texte dans une ligne dans wpf textblock

<TextBlock 
    Text ="asfasfasfa 
    asdasdasd" 
</TextBlock> 

TextBlock afficher en défaut deux lignes,

mais je veux dans une seule ligne comme celui-ci "asafsf asfafaf". Je veux dire montrer tout le texte dans une ligne même s'il y a plus d'une ligne dans le texte
que devrais-je faire?

Répondre

6

Au lieu de cela:

  <TextBlock Text="Hello 
       How Are 
       You??"/> 

Utilisez ceci:

  <TextBlock> 
       Hello 
       How Are 
       You?? 
      </TextBlock> 

ou ceci:

  <TextBlock> 
       <Run>Hello</Run> 
       <Run>How Are</Run> 
       <Run>You??</Run> 
      </TextBlock> 

ou définir la propriété de texte dans le code derrière comme ceci:

(In XAML)

  <TextBlock x:Name="MyTextBlock"/> 

(In code - c#)

  MyTextBlock.Text = "Hello How Are You??" 

approche code-behind a un avantage que vous pouvez formater votre texte avant de le mettre. Exemple: Si le texte est récupéré à partir d'un fichier et que vous voulez supprimer tous les caractères de nouvelle ligne de retour du chariot, vous pouvez le faire de cette façon:

string textFromFile = System.IO.File.ReadAllText(@"Path\To\Text\File.txt"); 
MyTextBlock.Text = textFromFile.Replace("\n","").Replace("\r",""); 
+0

En fait, le texte à afficher se trouve dans un fichier, donc je ne peux pas le faire comme ça, y at-il un autre moyen? Merci beaucoup. – baorui

+0

S'il vous plaît vérifier ma réponse éditée pour cela. – mg007

14

Utilisez un convertisseur:

<TextBlock Text={Binding Path=TextPropertyName, 
Converter={StaticResource SingleLineTextConverter}} 

SingleLineTextConverter .cs: ​​

public class SingleLineTextConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string s = (string)value; 
     s = s.Replace(Environment.NewLine, " "); 
     return s; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+1

Que diriez-vous si vous avez donné le code source du convertisseur à titre d'exemple ici? Je n'ai pas de VS à portée de main, donc je ne peux pas le coller. Le code source en ferait la réponse définitive. – Thorsten79

+0

Le bon chemin de Thaht, merci ~~ – baorui

+1

Aimé l'idée, merci. Mais j'ai dû faire une vérification nulle au début de la méthode Convert(), sinon j'ai une exception de référence nulle. – nightcoder

Questions connexes