Я беру текст из файла XML и хотел бы вставить несколько новых строк, которые интерпретируются рендером текстового блока как новые строки.
Я пробовал:
<data>Foo bar baz \n baz bar</data>
Но данные по-прежнему отображаются без новой строки. Я устанавливаю содержимое <data>
через .Text
свойство через C #.
Что мне нужно вставить в XML, чтобы он отобразил новую строку в графическом интерфейсе?
Я пробовал что-то вроде этого вручную, устанавливая текст в XAML:
<TextBlock Margin="0 15 0 0" Width="600">
There
is a new line.
</TextBlock>
И хотя закодированный символ не отображается в графическом интерфейсе, он также не дает мне новой строки.
Ответы:
Вы можете попробовать ввести новую строку в данные:
Если это не сработает, вам может потребоваться проанализировать строку вручную.
Кстати, если вам нужен прямой XAML, это просто:
источник
XmlSerializer
разрывы, будут сохранены. В Xaml вам понадобится<LineBreak/>
.Для полноты: вы также можете сделать это:
x0A - это закрытый шестнадцатеричный перевод строки. Эквивалент \ n
источник
Вы также можете использовать привязку
И установите MyText так:
источник
вы должны использовать
Или, если хотите:
будьте осторожны: если вы оба используете & 10 И перейдете к следующей строке текста, у вас будет ДВЕ пустые строки.
подробности здесь: http://msdn.microsoft.com/en-us/library/ms788746.aspx
источник
Несмотря на то, что это старый вопрос, я только что столкнулся с проблемой и решил ее иначе, чем в приведенных ответах. Может быть, это может быть полезно другим.
Я заметил, что, хотя мои XML-файлы выглядели так:
Когда он был прочитан в моем коде C #, строка имела двойную обратную косую черту.
Чтобы исправить это, я написал ValueConverter, чтобы убрать лишнюю обратную косую черту.
источник
TextWrapping="Wrap"
(иAcceptsReturn="True"
если бы это был TextBox) в XAML на TextBlock, вы все сделали правильно, и это должен быть ответ, но просто скажите, чтобы сделать.Replace()
значение, поступающее из базы данных - нет необходимости в причудливая функция:valueAsString = valueAsString.Replace("\\r\\n", "\r\n");
любое значение, введенное с помощью клавиши Return, будет записано в БД нормально - это когда C # захватит его, чтобы отобразить значение, вызывающее проблемы, как вы заметили. Так что это нужно было бы назвать загрузкой текста.Если ничего не помогает, вы также можете использовать
источник
источник
Использование System.Environment.NewLine - единственное решение, которое сработало для меня. Когда я попробовал \ r \ n, он просто повторил фактическое \ r \ n в текстовом поле.
источник
Вы должны убедиться, что в текстовом блоке включена эта опция:
источник
Вставьте «разрыв строки» или «разрыв абзаца» в RichTextBox «rtb» следующим образом:
Единственный способ получить элементы NewLine - сначала вставить текст с элементами «\ r \ n», а затем применить дополнительный код, который работает с объектами Selection и / или TextRange. Это гарантирует, что элементы \ par преобразованы в элементы \ line, сохранены по желанию и по-прежнему верны при повторном открытии файла * .Rtf. Это то, что я обнаружил после упорных попыток. Мои три строки кода должны быть окружены дополнительным кодом (с циклами), чтобы установить элементы TextPointer (.Start .End .ContentStart .ContentEnd), где должны идти строки и разрывы, что я успешно сделал для своих целей.
источник