wpf TextBlock 컨트롤에 새 줄을 추가하는 방법은 무엇입니까?
XML 파일에서 텍스트를 가져오는 중입니다. 텍스트 블록 렌더링에서 새 행으로 해석되는 새 행을 삽입하려고 합니다.
시도해 봤습니다.
<data>Foo bar baz \n baz bar</data>
그러나 데이터는 여전히 새 선 없이 표시됩니다.의 내용을 설정했습니다.<data>
경유로.Text
C#을 통한 재산.
XML이 GUI에서 새 줄을 렌더링하려면 XML에 무엇을 넣어야 합니까?
XAML에서 텍스트를 수동으로 설정하는 것과 같은 방법을 시도했습니다.
<TextBlock Margin="0 15 0 0" Width="600">
There
is a new line.
</TextBlock>
그리고 인코딩된 문자가 GUI에 나타나지 않지만 새로운 줄도 제공하지 않습니다.
데이터에 새 줄을 추가할 수 있습니다.
<data>Foo bar baz
baz bar</data>
이 방법이 작동하지 않으면 문자열을 수동으로 구문 분석해야 할 수 있습니다.
직접적인 XAML이 필요한 경우 이는 간단합니다.
<TextBlock>
Lorem <LineBreak/>
Ipsum
</TextBlock>
완성도를 위해:다음과 같은 작업도 수행할 수 있습니다.
<TextBlock Text="Line1
Line 2"/>
x0A는 이스케이프된 16진수 라인 피드입니다.\n의 등가물
사용해야 합니다.
< 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... this line below < / SomeObject>
주의: 만약 당신이 둘 다 10파운드를 사용하고 당신의 텍스트에서 다음 줄로 간다면, 당신은 두 개의 빈 줄이 있을 것입니다.
자세한 내용은 여기: http://msdn.microsoft.com/en-us/library/ms788746.aspx
바인딩을 사용할 수도 있습니다.
<TextBlock Text="{Binding MyText}"/>
내 텍스트를 다음과 같이 설정합니다.
Public string MyText
{
get{return string.Format("My Text \n Your Text");}
}
오래된 질문임에도 불구하고, 저는 방금 문제를 접했고 주어진 답과 다르게 풀었습니다.다른 사람들에게 도움이 될 수도 있습니다.
XML 파일이 다음과 같이 생겼음에도 불구하고,
<tag>
<subTag>content with newline.\r\nto 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", "\r\n");
return valueAsString;
}
public object ConvertBack(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
다른 모든 것이 실패할 경우 사용할 수도 있습니다.
"My text needs a line break here" + System.Environment.NewLine + " This should be a new line"
<TextBlock Margin="4" TextWrapping="Wrap" FontFamily="Verdana" FontSize="12">
<Run TextDecorations="StrikeThrough"> Run cannot contain inline</Run>
<Span FontSize="16"> Span can contain Run or Span or whatever
<LineBreak />
<Bold FontSize="22" FontFamily="Times New Roman" >Bold can contains
<Italic>Italic</Italic></Bold></Span>
</TextBlock>
시스템 사용.환경.NewLine은 저에게 효과가 있는 유일한 솔루션입니다.내가 \r\n을 시도했을 때, 그것은 단지 텍스트 상자에서 실제 \r\n을 반복했습니다.
다음과 같이 RichTextBox "rtb"에 "라인 구분" 또는 "문단 구분"을 삽입합니다.
var range = new TextRange(rtb.SelectionStart, rtb.Selection.End);
range.Start.Paragraph.ContentStart.InsertLineBreak();
range.Start.Paragraph.ContentStart.InsertParagraphBreak();
NewLine 항목을 가져오는 유일한 방법은 "\r\n" 항목이 포함된 텍스트를 먼저 삽입한 다음 Selection 및/또는 TextRange 개체에서 작동하는 코드를 더 적용하는 것입니다.이렇게 하면 \par 항목이 \line 항목으로 변환되고 원하는 대로 저장되며 *.Rtf 파일을 다시 열 때에도 올바른 상태가 유지됩니다.그것이 제가 열심히 노력한 끝에 지금까지 발견한 것입니다.TextPointer 항목(.Start)을 설정하려면 세 개의 코드 줄을 더 많은 코드(루프 포함)로 둘러싸야 합니다.End.ContentStart.내용 끝) 라인과 브레이크가 가야 하는 곳, 제 목적을 위해 성공적으로 수행한 것입니다.
StringBuilder somestext = new StringBuilder();
somestext.AppendLine("this is some text on line 1");
somestext.AppendLine(TB_Tag_Linebreak);
somestext.AppendLine("this is some more text on line 2");
return somestext.ToString();
\n을 시스템으로 바꿀 속성을 정의합니다.환경.세트의 새 줄:
private string _data;
public string Data
{
get => _data;
set {
_data = value.Replace("\\n", System.Environment.NewLine);
OnPropertyChanged();
}
}
속성에 텍스트 상자를 바인딩합니다.
<TextBox Text="{Binding Data}" />
xml 데이터를 읽고 속성에 할당합니다.
Data = ...data fetched from xml...
xml 데이터의 모든 \n은 TextBox에 새 줄로 표시됩니다.
@Ketobomb 제안에서, 당신의 스타일에 이것을 사용할 수 있습니까?
<Style x:Key="TextBlockTestStyle" TargetType="TextBlock">
<Setter Property="Text" Value="line1!
Line2
Line3"/>
</Setter>
다음과 같은 방식으로 사용합니다.
<TextBlock x:Name="TextBlockTest" Style="{StaticResource TextBlockTestStyle}"/>
텍스트 블록에 다음 옵션이 활성화되어 있는지 확인해야 합니다.
AcceptsReturn="True"
언급URL : https://stackoverflow.com/questions/8525396/how-to-put-a-new-line-into-a-wpf-textblock-control
'it-source' 카테고리의 다른 글
디렉토리의 모든 파일 및 폴더를 삭제하는 방법은 무엇입니까? (0) | 2023.05.01 |
---|---|
어떻게 하면 맥에 파이썬의 pip3를 설치할 수 있습니까? (0) | 2023.05.01 |
Bash 백스틱과 동일한 배치 (0) | 2023.05.01 |
무엇을 탐지할 수 있습니까?NET Framework 버전 및 서비스 팩이 설치되어 있습니까? (0) | 2023.05.01 |
Bash 배열에서 요소 제거 (0) | 2023.04.26 |