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>
via la .Text
propriété via C #.
Que dois-je mettre dans le XML pour qu'il affiche la nouvelle ligne dans l'interface graphique?
J'ai essayé quelque chose comme ça en définissant manuellement le texte dans le XAML:
<TextBlock Margin="0 15 0 0" Width="600">
There
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 de nouvelle ligne.
Réponses:
Vous pouvez essayer de mettre une nouvelle ligne dans les données:
Si cela ne fonctionne pas, vous devrez peut-être analyser la chaîne manuellement.
Si vous avez besoin de XAML direct, c'est facile d'ailleurs:
la source
XmlSerializer
les ruptures seront conservées. En Xaml, vous avez besoin<LineBreak/>
.Par souci d'exhaustivité: vous pouvez également faire ceci:
x0A est le saut de ligne hexadécimal échappé. L'équivalent de \ n
la source
Vous pouvez également utiliser la liaison
Et définissez MyText comme ceci:
la source
Tu dois utiliser
Ou si vous préférez:
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
la source
Même si c'est une vieille question, je viens de rencontrer le problème et je l'ai résolu différemment des réponses données. Cela pourrait peut-être être utile aux autres.
J'ai remarqué que même si mes fichiers XML ressemblaient à:
Lorsqu'elle était lue dans mon code C #, la chaîne avait des doubles barres obliques inverses.
Pour résoudre ce problème, j'ai écrit un ValueConverter pour supprimer la barre oblique inverse supplémentaire.
la source
TextWrapping="Wrap"
(etAcceptsReturn="True"
s'il s'agissait d'un TextBox) dans le XAML sur le TextBlock, vous aviez raison, et cela devrait être la réponse - mais dites simplement de faire le.Replace()
sur la valeur provenant de la base de données - pas besoin d'un fonction fantaisie:valueAsString = valueAsString.Replace("\\r\\n", "\r\n");
toute valeur entrée à l'aide de la touche Retour sera écrite dans la base de données très bien - c'est lorsque C # la prend en main pour afficher la valeur que les problèmes sont causés, comme vous l'avez noté. Cela devrait donc être appelé lors du chargement du texte.Si tout le reste échoue, vous pouvez également utiliser
la source
la source
Utiliser System.Environment.NewLine est la seule solution qui a fonctionné pour moi. Quand j'ai essayé \ r \ n, il a simplement répété le \ r \ n réel dans la zone de texte.
la source
Vous devez vous assurer que le bloc de texte a cette option activée:
la source
Insérez un "saut de ligne" ou un "saut de paragraphe" dans un RichTextBox "rtb" comme ceci:
La seule façon d'obtenir les éléments NewLine est d'insérer d'abord du texte avec les éléments "\ r \ n", puis d'appliquer plus de code qui fonctionne sur les objets Selection et / ou TextRange. Cela garantit que les éléments \ par sont convertis en \ éléments de ligne, sont enregistrés comme vous le souhaitez et sont toujours corrects lors de la réouverture du fichier * .Rtf. C'est ce que j'ai trouvé jusqu'ici après de durs efforts. Mes trois lignes de code doivent être entourées de plus de code (avec des boucles) pour définir les éléments TextPointer (.Start .End .ContentStart .ContentEnd) où les lignes et les pauses devraient aller, ce que j'ai fait avec succès pour mes besoins.
la source