0

我有一个自定义 ScrollViewer 模板,用于自定义 DocumentViewer 控件。

<Style TargetType="{x:Type ScrollViewer}"  x:Key="CustomScrollPresenter">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ScrollViewer}">
                    <Grid Background="{TemplateBinding Panel.Background}">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Rectangle Grid.Column="1" Grid.Row="1" Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
                        <ScrollContentPresenter

                    Grid.Column="0" 
                    Grid.Row="0" 
                    Margin="{TemplateBinding Control.Padding}" 
                    Content="{TemplateBinding ContentControl.Content}" 
                    ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
                    CanContentScroll="{TemplateBinding ScrollViewer.CanContentScroll}" />
                        <ScrollBar 
                    x:Name="PART_VerticalScrollBar"
                    Grid.Column="1" 
                           Grid.Row="0" 
                           Minimum="0" 
                           Maximum="{TemplateBinding ScrollViewer.ScrollableHeight}" 
                           ViewportSize="{TemplateBinding ScrollViewer.ViewportHeight}" 
                           Value="{Binding Path=VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource Mode=TemplatedParent}}" 
                           Visibility="{TemplateBinding ScrollViewer.ComputedVerticalScrollBarVisibility}" 
                           Cursor="Arrow" AutomationProperties.AutomationId="VerticalScrollBar" />
                        <ScrollBar 
                    x:Name="PART_HorizontalScrollBar"
                    Orientation="Horizontal" Grid.Column="0" Grid.Row="1" Minimum="0" 
                           Maximum="{TemplateBinding ScrollViewer.ScrollableWidth}" ViewportSize="{TemplateBinding ScrollViewer.ViewportWidth}" Value="{Binding Path=HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource Mode=TemplatedParent}}" Visibility="{TemplateBinding ScrollViewer.ComputedHorizontalScrollBarVisibility}" Cursor="Arrow" AutomationProperties.AutomationId="HorizontalScrollBar" />

                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

但是如何覆盖 ScrollViewer 的 ContentTemplate 呢?我的意思是,我可以用什么来代替它:

ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"

有一些我可以用来为 ScrollViewer 中的每个项目设置样式的东西吗?例如,在 ScrollViewer 的每个项目下添加一个带有一些页面描述的 TextBlock?

谢谢!

4

0 回答 0