我有这个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>
<!-- ... -->
问题是流文档不会水平滚动。我一直无法启用它。
任何线索?
提前致谢。
答案 0 :(得分:1)
这里有几件事。第一个是在Paragraph中使用控件的功能与为了适合FlowDocument而包装的Run不同。
第二个是FlowDocument适合您的FlowDocumentScrollViewer。如果像你一样向它添加一个控件,它将适合FlowDocument和viewer的宽度,文本将超出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拥有它自己的HorizontalScrollBarVisibility属性,你可以使用它(除非一些样式问题阻止它)。