DocumentViewer中FixedDocument周围的边距

时间:2013-05-01 00:37:41

标签: wpf wpf-controls scrollviewer documentviewer fixeddocument

我在DocumentViewer中显示一个FixedDocument,默认情况下,ScrollViewer显示的文档在文档的顶部或下方没有边距。

我想要的是更改DocumentViewer的样式,以便滚动条沿着DocumentViewer的整个边缘伸展,这是文档底部上方和下方的边距,但如果顶部和/或者无法看到文档的底部,文档分别延伸到DocumentViewer的顶部和/或底部边缘。 (如果我有“声望”,我可以发布图片,显示我想要实现的目标。)

问题是ScrollViewer使用ScrollContentPresenter来显示FixedDocument,而你无法在ScrollContentPresenter中填充内容(或者至少我还没有找到)。

使用下面的代码,我在DocumentViewer的样式中修改了ScrollViewer的样式,我让它看起来正确,但由于某种原因,它直到您单击文档时才启用垂直滚动条,并且水平滚动条永远不会启用:

<ControlTemplate TargetType="{x:Type ScrollViewer}">
    <Grid>
        <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions>
        <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions>

        <ScrollViewer CanContentScroll="True"
                   HorizontalScrollBarVisibility="Hidden"
                   VerticalScrollBarVisibility="Hidden">
            <ContentPresenter  Content="{TemplateBinding Content}" Margin="0,50,0,50"/>
        </ScrollViewer>

        <ScrollBar x:Name="PART_VerticalScrollBar" Orientation="Vertical" Grid.Column="1" Grid.Row="0" Minimum="0" Maximum="{TemplateBinding ScrollableHeight}" Value="{TemplateBinding VerticalOffset}" ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>

        <ScrollBar x:Name="PART_HorizontalScrollBar" Orientation="Horizontal" Grid.Column="0" Grid.Row="1" Minimum="0" Maximum="{TemplateBinding ScrollableWidth}" Value="{TemplateBinding HorizontalOffset}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>
    </Grid>
</ControlTemplate>

通常有一个ScrollContentPresenter,我放置了一个包含带有边距的ContentPresenter的ScrollViewer。这是一个混乱的解决方案,所以我希望有人知道更好的解决方案。

如果我使用的是除FixedDocument之外的任何控件,我可以在ScrollViewer中显示的对象周围定义边距,但无论出于何种原因,您都无法在FixedDocument周围定义边距,并定义边距在PageContent控件周围什么都不做。

0 个答案:

没有答案