我正在流文档中建立数据。用户可以更改某些属性并查看实时“打印预览”。为此,我只需将 FlowDocument 转换为固定文档(使用本文中的以下方法)并显示在 DocumentViewer 中。
public static FixedDocument ToFixedDocument(this FlowDocument flowDocument)
{
var paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
var package = Package.Open(new MemoryStream(), FileMode.Create, FileAccess.ReadWrite);
var packUri = new Uri("pack://temp.xps");
PackageStore.RemovePackage(packUri);
PackageStore.AddPackage(packUri, package);
var xps = new XpsDocument(package, CompressionOption.NotCompressed, packUri.ToString());
XpsDocument.CreateXpsDocumentWriter(xps).Write(paginator);
FixedDocument doc = xps.GetFixedDocumentSequence().References[0].GetDocument(true);
return doc;
}
但是,已添加到 FlowDocument 的任何数据网格都不会在 FixedDocument 中正确呈现。它们出现在没有数据的 FixedDocument 中;网格的形状是正确的,有列标题和行,只是没有数据。
最初我认为这可能是因为数据网格包含在 FlowDocument 中的 BlockUIContainer 中,但是我有其他 BlockUIContainer 元素包含一个 Grid(带有 TextBlocks)甚至一个Xceed DataGridControl。它们在 FixedDocument 中都呈现得很好。
我在其他地方看到关于显示 DataGrids 的其他问题,但它们将 DataGrid 转换为表,或者创建 DocumentPaginator 以在跨多个页面时重新分页数据网格。这些都不适合我,我希望看到 FixedDocument 中的 DataGrid 与 FlowDocument 中的完全一样
为什么 DataGrid 不能在 FixedDocument 中正确显示?