WPF Reference ScrollContentPresenter of ScrollViewer Template

controlsscrollviewertemplateswpf

I have a WPF ScrollViewer, and I would like to get to the ScrollContentPresenter of it's template.

Best Solution

If you wish to get to the ScrollContentPresenter of a ScrollViewer you can use a ControlTemplate

<ScrollViewer Style="{StaticResource LeftScrollViewer}"/>


<Style x:Key="LeftScrollViewer" TargetType="{x:Type ScrollViewer}">
 <Setter Property="OverridesDefaultStyle" Value="True"/>
 <Setter Property="Template">
 <Setter.Value>
  <ControlTemplate TargetType="{x:Type ScrollViewer}">
    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition/>
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition Height="Auto"/>
      </Grid.RowDefinitions>

      <ScrollContentPresenter Grid.Column="1"/>

      <ScrollBar Name="PART_VerticalScrollBar"
        Value="{TemplateBinding VerticalOffset}"
        Maximum="{TemplateBinding ScrollableHeight}"
        ViewportSize="{TemplateBinding ViewportHeight}"
        Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>
      <ScrollBar Name="PART_HorizontalScrollBar"
        Orientation="Horizontal"
        Grid.Row="1"
        Grid.Column="1"
        Value="{TemplateBinding HorizontalOffset}"
        Maximum="{TemplateBinding ScrollableWidth}"
        ViewportSize="{TemplateBinding ViewportWidth}"
        Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>

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