如何设置 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>
我正在尝试更改 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>