Wpf DocumentViewer中固定文档周围的边距

Wpf DocumentViewer中固定文档周围的边距,wpf,wpf-controls,scrollviewer,documentviewer,fixeddocument,Wpf,Wpf Controls,Scrollviewer,Documentviewer,Fixeddocument,我正在DocumentViewer中显示一个FixedDocument,默认情况下,ScrollViewer显示的文档在文档顶部或底部上方没有边距 我想更改DocumentViewer的样式,使滚动条沿着DocumentViewer的整个边缘延伸,这是文档顶部和底部上方和下方的边距,但是如果看不到文档的顶部和/或底部,文档将延伸到DocumentViewer的顶部和/或底部边缘,分别地(如果我有“声誉”,我可以发布一张照片,展示我正在努力实现的目标。) 问题是ScrollViewer使用Scro

我正在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,我在其中放置了一个ScrollViewer,其中包含一个带边距的ContentPresenter。这是一个混乱的解决方案,所以我希望有人知道更好的解决方案

如果我使用的是除FixedDocument以外的任何控件,我可以在ScrollViewer中显示的对象周围定义一个边距,但无论出于何种原因,都不能在FixedDocument周围定义边距,而在PageContent控件周围定义边距则没有任何作用