效果
scrollviewer Style:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ImageButtonTest01.Themes">
<ControlTemplate x:Key="scrollViewerControlTemplate" TargetType="{x:Type ScrollViewer}">
<Grid x:Name="Grid" Background="{TemplateBinding Background}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!--右下角-->
<!--<Rectangle x:Name="Corner" Grid.Column="1" Fill="#A0FFBD7B" Grid.Row="1"/>-->
<ScrollContentPresenter x:Name="PART_ScrollContentPresenter" Grid.Row="0" Grid.Column="0"
CanContentScroll="{TemplateBinding CanContentScroll}"
CanHorizontallyScroll="False" CanVerticallyScroll="False"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}"
Margin="{TemplateBinding Padding}"/>
<ScrollBar x:Name="PART_VerticalScrollBar" Grid.Row="0" Grid.RowSpan="2" Grid.Column="1"
AutomationProperties.AutomationId="VerticalScrollBar"
Cursor="Arrow"
Width="24"
Maximum="{TemplateBinding ScrollableHeight}" Minimum="0"
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
ViewportSize="{TemplateBinding ViewportHeight}"
Style="{DynamicResource ScrollBarDefaultStyle}"/>
<ScrollBar x:Name="PART_HorizontalScrollBar" Grid.Row="1" Grid.Column="0"
AutomationProperties.AutomationId="HorizontalScrollBar"
Cursor="Arrow"
Height="24"
Maximum="{TemplateBinding ScrollableWidth}" Minimum="0"
Orientation="Horizontal"
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
ViewportSize="{TemplateBinding ViewportWidth}"
Style="{DynamicResource ScrollBarDefaultStyle}"/>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Path=VerticalScrollBarVisibility, RelativeSource={RelativeSource Self}}" Value="Visible">
<Setter TargetName="PART_VerticalScrollBar" Property="Grid.RowSpan" Value="2" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=VerticalScrollBarVisibility, RelativeSource={RelativeSource Self}}" Value="Hidden">
<Setter TargetName="PART_VerticalScrollBar" Property="Grid.RowSpan" Value="1" />
<Setter TargetName="PART_HorizontalScrollBar" Property="Margin" Value="2,0,2,0" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=VerticalScrollBarVisibility, RelativeSource={RelativeSource Self}}" Value="Disabled">
<Setter TargetName="PART_VerticalScrollBar" Property="Grid.RowSpan" Value="1" />
<Setter TargetName="PART_HorizontalScrollBar" Property="Margin" Value="2,0,2,0" />
</DataTrigger>
<!--<Trigger Property="IsMouseOver" Value="true">
<Setter Property="BorderBrush" Value="Red"/>
</Trigger>-->
</ControlTemplate.Triggers>
</ControlTemplate>
<Style x:Key="scrollviewerDefaultStyle" TargetType="{x:Type ScrollViewer}">
<Setter Property="BorderBrush" Value="LightGray"/>
<Setter Property="BorderThickness" Value="2"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
<Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="Template" Value="{StaticResource scrollViewerControlTemplate}"/>
</Style>
</ResourceDictionary>
ScrollBar Style:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:ImageButtonTest01.Themes">
<Style x:Key="FocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<SolidColorBrush x:Key="ScrollBar.Static.Background" Color="#F0F0F0"/>
<SolidColorBrush x:Key="ScrollBar.Static.Border" Color="#F0F0F0"/>
<SolidColorBrush x:Key="ScrollBar.Pressed.Glyph" Color="#FFFFFF"/>
<SolidColorBrush x:Key="ScrollBar.MouseOver.Glyph" Color="#000000"/>
<SolidColorBrush x:Key="ScrollBar.Disabled.Glyph" Color="#BFBFBF"/>
<SolidColorBrush x:Key="ScrollBar.Static.Glyph" Color="#606060"/>
<SolidColorBrush x:Key="ScrollBar.MouseOver.Background" Color="#505A7E8F"/>
<SolidColorBrush x:Key="ScrollBar.MouseOver.Border" Color="#505A7E8F"/>
<SolidColorBrush x:Key="ScrollBar.Pressed.Background" Color="#A05A7E8F"/>
<SolidColorBrush x:Key="ScrollBar.Pressed.Border" Color="#A05A7E8F"/>
<SolidColorBrush x:Key="ScrollBar.Disabled.Background" Color="#F0F0F0"/>
<SolidColorBrush x:Key="ScrollBar.Disabled.Border" Color="#F0F0F0"/>
<!--ScrollBarButton-->
<SolidColorBrush x:Key="ScrollBarButton.Static.Background" Color="#FFFFD3A8"/>
<SolidColorBrush x:Key="ScrollBarButton.MouseMove.Background" Color="#A0FFD3A8"/>
<SolidColorBrush x:Key="ScrollBarButton.Pressed.Background" Color="#A0FFBD7B"/>
<SolidColorBrush x:Key="ScrollBarButton.Disabled.Background" Color="#FFFFEFDF"/>
<Style x:Key="ScrollBarButton" TargetType="{x:Type RepeatButton}">
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Focusable" Value="false"/>
<Setter Property="IsTabStop" Value="false"/>
<Setter Property="Template">
<Sett