2

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>

通常、余白のある ContentPresenter を含む ScrollViewer を配置した ScrollContentPresenter があります。これは面倒な解決策なので、誰かがより良い解決策を知っていることを望んでいました。

FixedDocument 以外のコントロールを操作している場合は、ScrollViewer に表示されているオブジェクトの周囲にマージンを定義するだけで済みますが、何らかの理由で、FixedDocument の周囲にマージンを定義することはできず、PageContent の周囲にマージンを定義することはできません。コントロールは何もしません。

4

0 に答える 0