C# FlowDocument行上的空白太多

C# FlowDocument行上的空白太多,c#,wpf,richtextbox,flowdocument,flowdocumentreader,C#,Wpf,Richtextbox,Flowdocument,Flowdocumentreader,在myWPF.NET5应用程序中的btnTest\u点击(…)事件之后,成功地将RichTextBox的内容显示到FlowDocumentReader中。但是,如下图所示,FlowDocumentReader的不同页面查看模式会在行上产生过多的空白问题:为什么会发生这种情况,我在这里可能遗漏了什么,我们如何解决这个问题 main window.xaml <Window x:Class="Wpf_RTBFlowDocTest.MainWindow" xml

在my
WPF.NET5
应用程序中的
btnTest\u点击(…)
事件之后,成功地将
RichTextBox
的内容显示到
FlowDocumentReader
中。但是,如下图所示,
FlowDocumentReader
的不同页面查看模式会在行上产生过多的空白问题:为什么会发生这种情况,我在这里可能遗漏了什么,我们如何解决这个问题

main window.xaml

<Window x:Class="Wpf_RTBFlowDocTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Wpf_RTBFlowDocTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <DockPanel Name="mainPanel">
            <ToolBar Name="mainToolBar" Height="30" DockPanel.Dock="Top">
                <Button x:Name="btnTest" Content="Test" Click="btnTest_Click"/>
            </ToolBar>
            <RichTextBox Name="rtbTest" AcceptsTab="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"/>
            <FlowDocumentReader x:Name="fdReader" ScrollViewer.VerticalScrollBarVisibility="Auto" IsScrollViewEnabled="True">
                <FlowDocument IsOptimalParagraphEnabled="True" IsHyphenationEnabled="True" TextAlignment="Left"></FlowDocument>
            </FlowDocumentReader>
        </DockPanel>
    </Grid>
</Window>
单击
测试
按钮之前,应用程序的原始显示:

运行上述代码后显示单个页面视图

运行上述代码后显示单滚动页面视图

运行上述代码后显示多个页面视图


这完全符合预期:您的源文本文件在用于行内容对齐的句子和空格中包含大量的换行字符:

在flow文档中,内容会自行调整以适应容器,但句子中的
换行符
字符会阻止
FlowDocument
控件正确格式化文本


因此,在将源文本加载到
FlowDocument
控件之前,有必要进行一些源文本处理。

文档内容可能会影响文档的显示。不知道是什么原因导致了这个问题是很难理解的。你能在“break”这句话周围只留下2-3段吗?把文件保存到
*.rtf
文件中,并将文件以文本格式包含到帖子中吗?@Jackdaw你的上述评论解决了这个问题。文档内容确实会影响文档的显示。我复制了太多空间的原始内容。在阅读您的评论后,我删除了这些空间以创建一个新文件。现在,应用程序在所有三种页面浏览模式下正确显示内容。您可能需要在
响应中解释问题的原因,我将把它标记为
回答
。注意:两个上传的文件将在30天后自动删除。
private void btnTest_Click(object sender, RoutedEventArgs e)
{
    var range = new TextRange(rtbTest.Document.ContentStart, rtbTest.Document.ContentEnd);
    if (!range.IsEmpty)
    {
        if(fdReader.Document.Blocks.Count > 0)
            fdReader.Document.Blocks.Clear();

        using (var stream = new MemoryStream())
        {
            range.Save(stream, DataFormats.XamlPackage);
            var copyto = new TextRange(fdReader.Document.ContentEnd, fdReader.Document.ContentEnd);
            copyto.Load(stream, DataFormats.XamlPackage);
        }
    }
    rtbTest.Visibility = Visibility.Collapsed;
    fdReader.Visibility = Visibility.Visible;
}