2010-09-06 288 views
2

我需要在WPF代碼中顯示非常大量的文本數據。首先,我嘗試使用TextBox(當然,渲染速度太慢)。現在我正在使用FlowDocument - 它真棒 - 但最近我有另一個要求:文本不應該連字符。據說它不是(document.IsHyphenationEnabled = false),但我仍然看不到我珍貴的水平滾動條。如果我放大比例文本是...連字符。在WPF中顯示大文本的最佳方式?

alt text

public string TextToShow 
{ 
    set 
    { 
     Paragraph paragraph = new Paragraph(); 
     paragraph.Inlines.Add(value); 

     FlowDocument document = new FlowDocument(paragraph); 
     document.IsHyphenationEnabled = false; 

     flowReader.Document = document; 
     flowReader.IsScrollViewEnabled = true; 
     flowReader.ViewingMode = FlowDocumentReaderViewingMode.Scroll; 
     flowReader.IsPrintEnabled = true; 
     flowReader.IsPageViewEnabled = false; 
     flowReader.IsTwoPageViewEnabled = false; 
    } 
} 

這就是我創建的FlowDocument - 而這纔是我的WPF控件的一部分:

<FlowDocumentReader Name="flowReader" Margin="2 2 2 2" Grid.Row="0" /> 

沒有犯罪=))

我想知道如何馴服這隻野獸 - 谷歌搜索沒有任何幫助。或者你有其他的方式來顯示兆字節的文本,或者文本框有一些我需要啓用的虛擬化功能。無論如何,我很樂意聽到你的迴應!

+2

你的問題不是連字符。它環繞着。看看這裏:http://msdn.itags.org/visual-studio/36912/,他們建議設置大於視圖窗口的段落寬度。 – OmerGertel 2010-09-06 17:34:19

+0

謝謝奧默爾 - 鏈接和建議似乎相當明智。將盡快嘗試:) – ProfyTroll 2010-09-06 21:00:29

+0

在此處查看答案:https://stackoverflow.com/questions/807347/how-do-i-handle-edit-large-amount-of-text-in-wpf/46546877#46546877 – juFo 2017-10-03 14:21:51

回答

1

它真的包裝不是連字符。我們可以通過將FlowDocument.PageWidth設置爲合理的值來解決這個問題,唯一的問題是如何確定這個值。 奧默爾建議這個配方msdn.itags.org/visual-studio/36912/但我不喜歡使用TextBlock作爲文本的測量工具。更好的方法:

  Paragraph paragraph = new Paragraph(); 
      paragraph.Inlines.Add(value); 


      FormattedText text = new FormattedText(value, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface(paragraph.FontFamily, paragraph.FontStyle, paragraph.FontWeight, paragraph.FontStretch), paragraph.FontSize, Brushes.Black); 

      FlowDocument document = new FlowDocument(paragraph); 
      document.PageWidth = text.Width*1.5; 
      document.IsHyphenationEnabled = false; 

奧梅爾 - 謝謝你的方向。

相關問題