如何设置 AvalonEdit 滚动条的样式

How to Style AvalonEdit ScrollBars

我正在尝试更改 AvalonEdit 中滚动条的拇指颜色。我尝试了多种方法:

设置 ScrollViewer 的样式 - 很多示例,但我无法编译其中的大部分,而且当我编译时它们不起作用。

使用 FindTemplate 并在运行时更改缩略图颜色。适用于许多但并非所有情况。

我只想更改拇指颜色。来吧 WPF,给我一根骨头。

请有人把我从痛苦中解救出来,告诉我怎么做。


跟进:

通过更改默认的缩略图样式,我能够获得我想要的大部分内容:

<UserControl.Resources>
    <Style x:Key="{x:Type Thumb}"
           TargetType="{x:Type Thumb}">
    <Setter Property="Opacity" Value="0.1" />
    </Style>
</UserControl.Resources>

但是,如果我尝试将控件模板添加到此样式,则没有任何效果。每次我认为我了解 WPF 样式时,都会发生一些事情让我相信我一无所知。

基于此页面:msdn

你可以这样做:

<Style TargetType="{x:Type Thumb}"  x:Key="ScrollBarThumb">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Thumb}">
                    <Border CornerRadius="2"
                            Background="Black"
                            BorderBrush="Red"
                            BorderThickness="1" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

<Style TargetType="ScrollBar">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ScrollBar}">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition MaxHeight="18" />
                            <RowDefinition Height="0.00001*" />
                            <RowDefinition MaxHeight="18" />
                        </Grid.RowDefinitions>
                        <Border Grid.RowSpan="3" />
                        <RepeatButton Grid.Row="0"
                                      Command="ScrollBar.LineUpCommand"
                                      Content="M 0 4 L 8 4 L 4 0 Z" />
                        <Track x:Name="PART_Track" Grid.Row="1" IsDirectionReversed="true">
                            <Track.Thumb>
                                <Thumb Style="{StaticResource ScrollBarThumb}" Margin="1,0,1,0"/>
                            </Track.Thumb>
                        </Track>
                        <RepeatButton Grid.Row="3"
                                      Command="ScrollBar.LineDownCommand"
                                      Content="M 0 0 L 4 4 L 8 0 Z" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>