以下のFlowDocumentのコンテンツを別のFlowDocumentにコピーするにはどうすればよいですか
foreach (var blk in fd1.Blocks)
{
fd2.Blocks.Add(blk);
}
fd1 は FlowDocument1 で、fd2 は FlowDocument2 です。
しかし、私は以下のエラーが発生します。
コレクションが変更されました。列挙操作が実行されない場合があります。
ありがとう
アービンド
以下のFlowDocumentのコンテンツを別のFlowDocumentにコピーするにはどうすればよいですか
foreach (var blk in fd1.Blocks)
{
fd2.Blocks.Add(blk);
}
fd1 は FlowDocument1 で、fd2 は FlowDocument2 です。
しかし、私は以下のエラーが発生します。
コレクションが変更されました。列挙操作が実行されない場合があります。
ありがとう
アービンド
各ブロックは FlowDocument によって「所有」されているため、別のブロックに追加することはできません。シリアル化してから逆シリアル化する必要があります。これにより、元の FlowDocument との結合が解除され、別の FlowDocument に追加できるようになります。
/// <summary>
/// Adds one flowdocument to another.
/// </summary>
/// <param name="from">From.</param>
/// <param name="to">To.</param>
public static void AddDocument(FlowDocument from, FlowDocument to)
{
TextRange range = new TextRange(from.ContentStart, from.ContentEnd);
MemoryStream stream = new MemoryStream();
System.Windows.Markup.XamlWriter.Save(range, stream);
range.Save(stream, DataFormats.XamlPackage);
TextRange range2 = new TextRange(to.ContentEnd, to.ContentEnd);
range2.Load(stream, DataFormats.XamlPackage);
}
これは以下からコピーされました:
http://social.msdn.microsoft.com/Forums/en/wpf/thread/f4b26d9b-5b74-446b-85e7-e49e519380ad