結論は次のとおりです。RDLC/SSRS の使用を避け、代わりに XAML から XPS ファイルを作成しようとしています。
ここにあるさまざまな記事のコードを組み合わせて、(1) 自分のページから必要な XAML オブジェクトを複製し、(2) それらを XPS オブジェクトの新しいページに渡します。
このプロセスは、コードで変更できるデータにバインドされていないオブジェクトでも問題なく機能するようです。これは、既存のラベルを複製する方法を示す簡単な例です。
pgeIncidentReport newPage = new pgeIncidentReport();
string Xaml = XamlWriter.Save(newPage.lblHeader);
StringReader stringReader = new StringReader(Xaml);
XmlReader xmlReader = XmlReader.Create(stringReader);
System.Windows.Controls.Label newL = System.Windows.Controls.Label)XamlReader.Load(xmlReader);
FixedDocument fixedDoc = new FixedDocument();
PageContent pageContent = new PageContent();
FixedPage fixedPage = new FixedPage();
//Create first page of document
fixedPage.Children.Add(newL);
ただし、DataContext を含むオブジェクトに同じコードを適用すると、コンテンツがレンダリングされません。リストボックスのアウトラインやデータグリッドの空の列を表示するように、オブジェクト自体をレンダリングしますが、他のデータは表示しません。オブジェクトをプルしているページが適切にレンダリングされることを確認しました。オブジェクト データが失われるのは、クローン作成と XPS レンダリングのみです。
ヘルプ。