Wpf 在TabControl中滚动FlowDocument

Wpf 在TabControl中滚动FlowDocument,wpf,scroll,tabcontrol,flowdocument,Wpf,Scroll,Tabcontrol,Flowdocument,我有这个XAML片段: <!-- ... --> <TabControl> <TabItem> <!-- ... --> </TabItem> <TabItem Header="Source" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True">

我有这个XAML片段:

<!-- ... -->
<TabControl>
    <TabItem>
        <!-- ... -->
    </TabItem>

    <TabItem Header="Source" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True">
        <FlowDocumentScrollViewer>
            <FlowDocument>
                <Paragraph>
                    <TextBlock
                        Text="{Binding Path=CurrentObject.Source}"
                        FontFamily="Consolas,Courier,Segoe UI"
                        FontSize="12" 
                        />
                </Paragraph>

            </FlowDocument>
        </FlowDocumentScrollViewer>
    </TabItem>
</TabControl>
<!-- ... -->

问题是流文档没有水平滚动。我一直无法做到这一点

有什么线索吗


提前谢谢。

这里有几件事。第一个是,在段落中使用控件的功能不同于为适合您的流程文档而包装的运行

第二,FlowDocument将适合您的FlowDocumentScrollViewer。如果像以前那样向其添加控件,它将适合FlowDocument和查看器的宽度,并且文本将超出TextBlock边框。这意味着您的文档不需要滚动条;您的文本块将被删除。通过将TextBlock的TextWrapping属性设置为Wrap,可以看到这一点

要解决此问题,请将PageWidth设置为超出查看器宽度限制的值,如下所示:

    <FlowDocumentScrollViewer>
        <FlowDocument PageHeight="1056"
                      PageWidth="816">
            <Paragraph>
                <TextBlock
                    Text="{Binding Path=CurrentObject.Source}"
                    FontFamily="Consolas,Courier,Segoe UI"
                    FontSize="12" 
                    />
            </Paragraph>

        </FlowDocument>
    </FlowDocumentScrollViewer>

或绑定到您的文本块:

    <FlowDocumentScrollViewer>
        <FlowDocument PageHeight="1056"
                      PageWidth="{Binding ElementName=Part, Path=ActualWidth}">
            <Paragraph>
                <TextBlock
                    Text="{Binding Path=CurrentObject.Source}"
                    FontFamily="Consolas,Courier,Segoe UI"
                    FontSize="12" 
                    />
            </Paragraph>

        </FlowDocument>
    </FlowDocumentScrollViewer>

最后一件事是FlowDocumentScrollViewer有它自己的HorizontalScrollBarVisibility属性,您可以使用它(除非某些样式问题阻止它)