如何设置AvalonEdit ScrollBars的样式

时间:2015-03-20 20:09:36

标签: wpf avalonedit

我正在尝试更改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样式时,有些事情会让我相信我什么都不知道。

1 个答案:

答案 0 :(得分:0)

基于此页面: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>