嗨,有没有办法检查Run是否只是LineBreak
?
建议您在RichTextBox
中使用一些LineBreak创建一些文本现在让我们进一步建议您想要将文本保存在数据库中后,您可能会将FlowDocument
转换为XML
我如何我现在想在TextBlock
中显示这个“XML-string”所以我将它转换回来,因为FlowDocument写了一个GetAllLine扩展并使用附加行为绑定到TextBlock.Inlines
这里我的LineBreak问题发生{ {1}}不会产生<Run xml:lang='de-de' xml:space='preserve' />
。
LineBreak
<Window x:Class="TextBlockAttachedIssue.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TextBlockAttachedIssue"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock local:Bindable.Inlines="{Binding myInlines}" TextWrapping="WrapWithOverflow"/>
</Grid>
</Window>
namespace TextBlockAttachedIssue
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new VM();
}
}
public class VM
{
private IEnumerable<Inline> _myInlines;
public VM()
{
var myParagraph =
"<Paragraph xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'> " +
"<Run xml:lang='de-de' xml:space='preserve' />" +
"<Run xml:lang='de-de' xml:space='preserve' />" +
" das ist text davor" +
"<Run FontFamily='Palatino Linotype'> " +
"line2 dsf adsgf sd fds gs fd gsfd g sdfg df h g hdgf h fg hhgfdh gfh " +
"</Run> " +
"<Run xml:lang='de-de' xml:space='preserve' />" +
"und das ist text danach" +
"</Paragraph> ";
var para = XamlReader.Load(XmlReader.Create(new StringReader(myParagraph))) as Paragraph;
myInlines = para.Inlines.ToList();
}
public IEnumerable<Inline> myInlines
{
get { return _myInlines; }
private set { _myInlines = value; }
}
}
}
答案 0 :(得分:1)
我不相信Run代表换行符。为了表示换行符,使用了不同类型的Inline - LineBreak。
在FlowDocumentReader中查看时,您的文字没有任何换行符:
<FlowDocumentReader>
<FlowDocument>
<Paragraph xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
<Run xml:lang='de-de' xml:space='preserve' />
<Run xml:lang='de-de' xml:space='preserve' /> das ist text davor
<Run FontFamily='Palatino Linotype'>
line2 dsf adsgf sd fds gs fd gsfd g sdfg df h g hdgf h fg hhgfdh gfh
</Run>
<Run xml:lang='de-de' xml:space='preserve' />
und das ist text danach
</Paragraph>
</FlowDocument>
</FlowDocumentReader>
另一方面,Paragraph是一个Block元素,它会突破到一个新行。也许段落引起了你的问题。
为什么不使用FlowDocumentReader来显示FlowDocument文本而不是TextBlock? 使用FlowDocumentReader,您将完全支持FlowDocument,包括段落和所有其他TextElement派生的项目。