1

我有一个从后面的代码填充的 FlowDocumentPageViewer 控件。我正在添加 3-4 个项目的文本。我需要知道第 1,2,3... 项在哪个页面结束。

这些项目在循环中添加到 FlowDocument 中,最后我有

flowDocumentPageViewer.Document = resultsDocument;

但是,即使我打电话

flowDocumentPageViewer.PageCount

我仍然得到 0。如果我在窗口呈现后执行单击之类的事件并打印上面的 PageCount,它会打印正确的值。但是,在填充 FlowDocument 时,我需要该值的总和。我希望有人知道某种与文本度量有关的技巧或任何其他可以解决此问题的方法。

4

2 回答 2

1

您别无选择,只能触发控件的(虚拟)渲染来获取此类信息。

最简单的方法是在 FlowDocumentPageViewer 上强制 a updateLayout(),但这意味着它会在您获得可能不是您想要的信息之前显示结果。

Arrange()如果您不希望显示内容,也可以使用该方法:

http://msdn.microsoft.com/en-us/library/system.windows.uielement.arrange.aspx

在您的控件上使用它后,您应该获得更新的信息。

于 2011-02-16T16:15:58.473 回答
0

我有同样的问题,老实说,我仍然这样做。任何 updateLayout() 都没有帮助。现在,在我将文档分配给查看器后,我使用计时器在一秒钟后获取页数。工作正常。

于 2013-01-02T14:33:48.420 回答