WPF RichTextBox word wrapping

流过昼夜 提交于 2019-12-11 03:28:57

问题


I am trying to display a large amount of data in a WPF RichTextBox control. My data contains space characters. There is a default word wrapping behavior that does not allow a "word", to be split and displayed on more lines.

This behavior is triggered by having space characters, questions marks, full stops or any other sentence/word delimiter. In the example below, if you replace the space character with a letter ( ex: "X" ), everything will be displayed as expected. As no delimiter characters are found, the big "word" is allowed to be truncated and displayed on multiple lines.

Is there a way of disabling this word/sentence wrapping behavior?

This is the XAML code:

<Window x:Class="StackOverQuestion_TextBoxWrap.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="535">
    <Grid>
        <RichTextBox Name="RichTextBox" />
    </Grid>
</Window>

This is the cs code behind:

 public MainWindow()
  {
     InitializeComponent();

     Random rnd = new Random();

     RichTextBox.FontFamily = new System.Windows.Media.FontFamily( "Lucida Console" );

     Paragraph par = new Paragraph();
     for ( int i = 0 ; i < 6000 ; i++ )
     {
        Run run = new Run();
        run.Text = rnd.NextDouble().ToString() + " " ;

        par.Inlines.Add( run );
     }
     RichTextBox.Document.Blocks.Add( par );
  }

Undesired wrapping behaviour: (please notice the different length of the lines)

0.562230281327958 0.269015421750497 0.130114109315963 0.527640242375266 0.592048898149305
0.73868335026255 0.478530279117883 0.939313878276997 0.890535918479104 0.00047110533363703
0.546423877378192 0.780972927241108 0.697112546626997 0.66897076306351 0.634957212319112
0.498651245375467 0.808829494662969 

Desired wrapping behaviour: (please notice the same length of the lines)

0.562230281327958 0.269015421750497 0.130114109315963 0.527640242375266 0.592048898149305
0.73868335026255 0.478530279117883 0.939313878276997 0.890535918479104 0.0004711053336370
3 0.546423877378192 0.780972927241108 0.697112546626997 0.66897076306351 0.63495721231911
2 0.498651245375467 0.808829494662969 

回答1:


I think you need to disable the word wrapping in the RichTextBox control, that is always enabled, according to the documentation in MSDN:

Text always wraps in a RichTextBox. If you do not want text to wrap then set the PageWidth on the FlowDocument to be larger than the width of the RichTextBox. However, once the page width is reached the text still wraps.

There's no explicit property to disable it, and you can do something like this:

richTextBox1.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;
richTextBox1.Document.PageWidth = 1000;

as suggested here.



来源:https://stackoverflow.com/questions/19589663/wpf-richtextbox-word-wrapping

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!