Как поместить новую строку в элемент управления текстовым блоком wpf?

Я извлекаю текст из XML-файла, и я хотел бы вставить некоторые новые строки, которые интерпретируются текстовым блоком в качестве новых строк.

Я пробовал:

<data>Foo bar baz 
 baz bar</data>

Но данные все еще отображаются без новой строки. Я установил содержимое <data>через .Textсвойство через C #.

Что мне нужно, чтобы поместить в XML, чтобы он отображал новую строку в графическом интерфейсе?

Я пробовал что-то вроде этого вручную, устанавливая текст в XAML:

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

И хотя кодированный символ не отображается в графическом интерфейсе, он также не дает мне новую строку.

c#,wpf,newline,textblock,

74

Ответов: 7


141 принят

Вы можете попробовать поместить новую строку в данные:

<data>Foo bar baz 
 baz bar</data>

Если это не сработает, вам может понадобиться вручную проанализировать строку.

Если вам нужен прямой XAML, это легко:

<TextBlock>
    Lorem <LineBreak/>
    Ipsum
</TextBlock>

25

Для полноты: вы также можете сделать это:

 <TextBlock Text="Line1&#x0a;Line 2"/>

18 ов

Вы также можете использовать привязку

<TextBlock Text="{Binding MyText}"/>

И установите MyText следующим образом:

Public string MyText
{
    get{return string.Format("My Text 
 Your Text");}
}

17

вы должны использовать

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

Или, если вы предпочитаете:

 <SomeObject xml:space="preserve" />  once upon a time... &#10; this line below < / SomeObject>

обратите внимание: если вы оба используете & 10 И вы переходите к следующей строке в тексте, у вас будет две пустые строки.

здесь для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/ms788746.aspx


9

Хотя это старый вопрос, я только что столкнулся с проблемой и решил ее иначе, чем заданные ответы. Может быть, это может быть полезно для других.

Я заметил, что хотя мои XML-файлы выглядели так:

<tag>
 <subTag>content with newline.
to display</subTag>
</tag>

Когда он был прочитан в мой код C #, строка имела двойную обратную косую черту.

\r\n

Чтобы исправить это, я написал ValueConverter, чтобы снять лишнюю обратную косую черту.

public class XmlStringConverter : IValueConverter
{
    public object Convert(
        object value,
        Type targetType,
        object parameter,
        CultureInfo culture)
    {
        string valueAsString = value as string;
        if (string.IsNullOrEmpty(valueAsString))
        {
            return value;
        }

        valueAsString = valueAsString.Replace("\r\n", "
");
        return valueAsString;
    }

    public object ConvertBack(
        object value,
        Type targetType,
        object parameter,
        CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
C #, WPF, символ новой строки, TextBlock,
Похожие вопросы