WPF文档查看器更新问题

时间:2011-02-04 17:49:21

标签: c# wpf documentviewer fixeddocument

在使用WPF中的documentViewer实现固定文档的文档轮换之后,我终于成功地使用以下代码:

//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 个答案:

答案 0 :(得分:2)

更新:此问题是由远程桌面会话中的工作引起的。