2011-02-04 10 views
2

WPFでDocumentViewerのを使用して固定したドキュメントのドキュメント回転を実装lenghtly戦いの後、私は最終的にそれが以下のコードでの作業を取得するためにうまく管理: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

更新:この問題は、リモートデスクトップセッション内で作業したために発生しました。