我正在构建一个应用程序,需要允许用户在另一个插入位置的当前插入位置插入文本RichTextBox
。我花了很多时间很多胡闹与FlowDocument
的对象模型跨越这个技术运行前 - source
和target
都是FlowDocument
S:如何将内联内容从一个FlowDocument插入另一个?
using (MemoryStream ms = new MemoryStream())
{
TextRange tr = new TextRange(source.ContentStart, source.ContentEnd);
tr.Save(ms, DataFormats.Xaml);
ms.Seek(0, SeekOrigin.Begin);
tr = new TextRange(target.CaretPosition, target.CaretPosition);
tr.Load(ms, DataFormats.Xaml);
}
这工作得非常好。
我现在唯一遇到的问题是,它始终将源文件作为新段落插入。它会打断插入符的当前运行(或其他),插入源代码并结束段落。如果源实际上是是的一段(或多个段落),但如果它仅仅是(比如说)一行文本则不适用。
我认为这很可能是最终检查目标,看它是否完全由一个块组成,如果是,请将TextRange
设置为指向开头和结尾处的块的内容保存到流之前。
FlowDocument
的整个世界对我来说都是一片黑暗的奥秘。如果必须的话,我可以成为这方面的专家(根据陀思妥耶夫斯基:“人是可以适应任何事情的动物)”,但如果有人已经知道了这一点,并可以告诉我如何做到这一点,生活容易得多。
这将需要一段时间之前,我其实可以去检查这是否正确,但它确定好像你已经到了我现在所在的位置,我很欣赏这些信息。 – 2010-03-24 07:29:27