我正在流文档中构建数据。用户可以更改某些属性并查看实时"打印预览"。我这样做只需将FlowDocument转换为固定文档(使用以下方法from this post)并在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中,没有数据;网格的形状是正确的,有列标题和行,只有没有数据。
最初我认为可能是因为datagid包含在FlowDocument中的BlockUIContainer中,但是我有其他BlockUIContainer元素包含Grid(带TextBlocks)甚至是Xceed DataGridControl。它们都在FixedDocument中渲染得很好。
我看到其他地方还有关于显示DataGrids的问题,但是它们将DataGrid转换为Tables,或者创建一个DocumentPaginator来在跨越多个页面时重新分隔数据网格。这些都不适合我,我想在FixedDocument中看到DataGrid与FlowDocument中显示的完全相同
为什么DataGrid无法在FixedDocument中正确显示?