0

I have this XAML fragment:

<!-- ... -->
<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>
<!-- ... -->

The problem is that the flow document does not scroll horizontally. I've been unable to enable that.

Any clues?

Thanks in advance.

4

1 回答 1

1

这里有几件事。第一个是在段落中使用控件的功能不同于将包装以适合您的 FlowDocument 的运行。

第二个是 FlowDocument 将适合您的 FlowDocumentScrollViewer。如果您像以前一样向其中添加控件,它将适合 FlowDocument 和查看器的宽度,并且文本将超出 TextBlock 边界。这意味着您的文档不需要滚动条;你的 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>

或绑定到您的 TextBlock:

    <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 有它自己的 Horizo​​ntalScrollBarVisibility 属性,您可以使用它(除非某些样式问题阻止它)。

于 2013-01-29T20:38:55.803 回答