2012-02-29 8 views
0

여러 개의 FlowDocuments를 연결하고자합니다. 아래 메소드에는 return 문이 없습니다. TextRange를 FlowDocument로 되돌려 놓고 싶습니다.여러 FlowDocuments를 하나의 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