我想在TextBox文本的WPF应用程序中创建一个小的Place编辑器。为此,我想使用RichTextBox。由于RichTextBox使用FlowDocument,而TextBlock使用InlineCollection,因此不起作用。有没有简单的方法将RichtextBox文档转换为InlineCollection? (如果我只允许内联支持RTB内容?)
答案 0 :(得分:4)
可以使用以下扩展方法之类的东西从FlowDocument中提取所有内联。您可能需要添加一些额外的空格内联来分隔段落和部分。
public static class FlowDocumentEx
{
public static ICollection<Inline> GetInlines(this FlowDocument doc)
{
return GetInlines(doc.Blocks);
}
public static ICollection<Inline> GetInlines(TextElementCollection<Block> blocks)
{
var inlines = new List<Inline>();
foreach (var block in blocks)
{
if (block is Paragraph)
{
inlines.AddRange(((Paragraph)block).Inlines);
}
else if (block is Section)
{
inlines.AddRange(GetInlines(((Section)block).Blocks));
}
}
return inlines;
}
}
您可以这样使用它:
textBlock.Inlines.Clear();
textBlock.Inlines.AddRange(richTextBox.Document.GetInlines());