我正在構建一個應用程序,需要允許用戶在另一個插入位置的當前插入位置插入文本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