2013-10-29 19 views
0

當導航到框架中的FlowDocument時,FlowDocumentReader默認爲ViewMode = Page。我需要獲取對FlowDocumentReader的引用,以便可以將ViewMode屬性設置爲Scroll。C#WPF導航到框架中的FlowDocument:需要設置ViewMode =滾動

我可以通過將Frame的Content屬性強制轉換爲FlowDocument來獲得對FlowDocument對象的引用,但是我無法找到對導航到文檔時實例化的FlowDocumentReader的引用。

據我所知,用戶可以輕鬆地點擊FlowDocumentReader中的滾動視圖按鈕,但我應該能夠以編程方式執行此操作。

回答

0

我正在吠叫錯誤的樹,字面!我的問題的答案是FlowDocumentReader是Visual樹的一部分。我不得不去尋找它。有可能更優雅的方式來做到這一點,但這一個工作:

static public void SetReaderModeToScroll(Visual myVisual) 
    { 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++) 
     { 
      // fetch the child 
      Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i); 

      // attempt to cast it to a FlowDocumentReader 
      try 
      { 
       FlowDocumentReader reader = (FlowDocumentReader) childVisual; 

       // if we get this far, we've found the reader 
       reader.ViewingMode = FlowDocumentReaderViewingMode.Scroll; 
       return; 
      } 
      // catch the exception if it doesn't work 
      catch (Exception e) 
      { 
      } 
      // Drill down another level and keep looking 
      SetReaderModeToScroll(childVisual); 
     } 
    }