Проблемы обновления WPF Document Viewer - PullRequest
2 голосов
/ 04 февраля 2011

После продолжительной борьбы за ротацию документов для фиксированных документов с использованием documentViewer в WPF мне, наконец, удалось заставить его работать с кодом ниже:

//Increment Rotation
        if (Rotation == 270)
            Rotation = 0;
        else
            Rotation += 90;

        FixedDocument document = (FixedDocument)docViewer.Document;
        foreach (PageContent page in document.Pages)
        {
            //Create New Size
            Size newSize = new Size(page.Child.Height, page.Child.Width);

            //Adjust Size
            page.Child.Height = newSize.Height;
            page.Child.Width = newSize.Width;

            page.Height = newSize.Height;
            page.Width = newSize.Width;

            //Create Transform
            TransformGroup pageTransform = new TransformGroup();
            pageTransform.Children.Add(new RotateTransform(Rotation));

            //Set Transform Shift
            if (Rotation == 90)
                pageTransform.Children.Add(new TranslateTransform(newSize.Width, 0));
            if (Rotation == 180)
                pageTransform.Children.Add(new TranslateTransform(newSize.Width, newSize.Height));
            if (Rotation == 270)
                pageTransform.Children.Add(new TranslateTransform(0, newSize.Height));

            page.Child.RenderTransform = pageTransform;

            //Update
            page.Measure(newSize);
            page.Arrange(new Rect(newSize));
            page.UpdateLayout();
        }
        docViewer.Document = null;
        docViewer.InvalidateVisual();
        docViewer.Document = document;
        docViewer.InvalidateVisual();
        docViewer.UpdateLayout();

Проблема в том, что при просмотре документа первая страница (или любая другая страница, которая была видна, когда вы начали вращение) не обновляется полностью. (Размер страницы изменяется, но преобразования не вступают в силу.) Пока вы не прокрутите изображение, затем назад и тогда все в порядке. Как мне это исправить?

1 Ответ

2 голосов
/ 21 марта 2011

Обновление: эта проблема была вызвана работой из сеанса удаленного рабочего стола.

...