Получение текущей страницы FlowDocumentPageViewer - PullRequest
1 голос
/ 23 декабря 2010

У меня есть элемент управления FlowDocumentPageViewer, который я заполняю из кода позади.Я добавляю текст из 3-4 пунктов.Мне нужно знать, на какой странице элемент 1,2,3 ... заканчивается.

Эти элементы добавляются в FlowDocument в цикле, а затем в конце я получаю

flowDocumentPageViewer.Document = resultsDocument;

Однако даже тогда, когда я вызываю

flowDocumentPageViewer.PageCount

, я все равно получаю 0. Если я выполняю какое-либо событие, например, щелчок, и печатаю указанный выше PageCount после рендеринга окна, оно выводит правильное значение.Тем не менее, мне нужно промежуточный итог этого значения при заполнении FlowDocument.Я надеюсь, что кто-то знает какую-то хитрость с текстовыми метриками или любым другим способом, которым это может быть решено.

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

У вас нет выбора, кроме как запустить (виртуальную) визуализацию вашего элемента управления, чтобы получить такую ​​информацию.

Самый простой способ - принудительно установить updateLayout() в FlowDocumentPageViewer, но это означает, чтоЯ покажу результат, прежде чем вы получите информацию, которая, вероятно, не та, которую вы хотите.

вы также можете использовать метод Arrange(), если вы не хотите, чтобы содержимое отображалось:

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

после использования этого на вашем контроле вы должны получить обновленную информацию.

0 голосов
/ 02 января 2013

У меня была такая же проблема, и, честно говоря, я до сих пор.Любое updateLayout () не помогло.Теперь я использую таймер, чтобы получить количество страниц спустя секунду после того, как я назначил документ для просмотра.Работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...