2012-02-29 44 views
0

私は連結したい複数のFlowDocumentを持っています。 以下のメソッドにはreturn文がありません。 私がしたいのは、TextRangeをFlowDocumentに戻すことです。複数のFlowDocumentsを1つのFlowDocumentに連結する方法

private FlowDocument Concatenate(FlowDocument source, FlowDocument target) 
{ using(MemoryStream ms = new MemoryStream()) 
    { 
     TextRange tr = new TextRange(source.ContentStart, source.ContentEnd); 
     tr.Save(ms, DataFormats.XamlPackage); 
     ms.Seek(0, SeekOrigin.Begin); 
     tr = new TextRange(target.ContentEnd, target.ContentEnd); 
     tr.Load(ms, DataFormats.XamlPackage); 
    } 
} 
+0

を私は問題があると思いますルートごとにルートがあるかルートがないかを指定します。私はXMLを試してそれぞれからコンテンツを読み込み、次にXMLに内容を書き込んで1に書き出します。 – Paparazzi

答えて

2

FlowDocumentsは、単にブロックのリストとしてソース文書からコレクションを抽出し、ターゲット文書にそれらを挿入するだけで基本的にブロックコレクション、それは可能であり、非常にクリーンであるので。この(未テスト)してみてくださいToListメソッド()を使用してブロックを抽出することを確認したり、他のあなたが

「オブジェクトがすでに別のコレクションに属している」の線に沿ってエラーが発生します。

'targetDocument is flowdocument that will be aggregate of both 
'insertDocument contains document content you want to insert into target 
Dim insertBlocks As List(Of Block) = insertDocument.Blocks.ToList() 
targetDocument.Blocks.AddRange(insertBlocks) 
+0

ありがとう。それは治療に効果があった。 – B4ndt

関連する問題