Comment insérer une nouvelle ligne dans un contrôle wpf TextBlock?

Je vais chercher du texte à partir d’un fichier XML et j’aimerais insérer de nouvelles lignes interprétées par le rendu du bloc de texte sous forme de nouvelles lignes.

J’ai essayé:

Foo bar baz \n baz bar 

Mais les données sont toujours affichées sans la nouvelle ligne. Je définis le contenu de via la propriété .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 ça en définissant manuellement le texte dans le XAML:

  There 
 is a new line.  

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

Vous pouvez essayer de mettre une nouvelle ligne dans les données:

 Foo bar baz baz bar 

Si cela ne fonctionne pas, vous devrez peut-être parsingr la chaîne manuellement.

Si vous avez besoin d’un XAML direct, c’est facile:

  Lorem  Ipsum  

Pour être complet: Vous pouvez aussi faire ceci:

   

Vous pouvez également utiliser la liaison

  

Et définissez MyText comme ceci:

 Public ssortingng MyText { get{return ssortingng.Format("My Text \n Your Text");} } 

Tu dois utiliser

  < SomeObject xml:space="preserve" > once upon a time ... this line will be below the first one < /SomeObject> 

Ou si vous préférez:

   once upon a time... 
 this line below < / SomeObject> 

Attention: si vous utilisez tous les deux 10 et que vous passez à la ligne suivante de votre texte, vous aurez deux lignes vides.

ici pour plus de détails: http://msdn.microsoft.com/en-us/library/ms788746.aspx

Même si c’est une vieille question, je viens de trouver le problème et de le résoudre différemment des réponses données. Peut-être que cela pourrait être utile aux autres.

J’ai remarqué que même si mes fichiers XML ressemblaient à ceci:

  content with newline.\r\nto display  

Quand il a été lu dans mon code C #, la chaîne a eu deux barres obliques inverses.

 \\r\\n 

Pour résoudre ce problème, j’ai écrit un ValueConverter pour supprimer la barre oblique inverse supplémentaire.

 public class XmlSsortingngConverter : IValueConverter { public object Convert( object value, Type targetType, object parameter, CultureInfo culture) { ssortingng valueAsSsortingng = value as ssortingng; if (ssortingng.IsNullOrEmpty(valueAsSsortingng)) { return value; } valueAsSsortingng = valueAsSsortingng.Replace("\\r\\n", "\r\n"); return valueAsSsortingng; } public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 

Si tout le rest échoue, vous pouvez également utiliser

 "My text needs a line break here" + System.Environment.NewLine + " This should be a new line" 
   Run cannot contain inline  Span can contain Run or Span or whatever  Bold can contains Italic