我可以将滚动条样式作为全局样式添加。但是这也会更改除ScrollViewer之外的所有ScrollBar。
我该如何仅更改ScrollViewer中的ScrollBar样式?或许添加一个带有Key的样式并在ControlTemplate等地方指定它。
以下是完整的ScrollBar样式:
以下是完整的ScrollBar样式:
<Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="IsTabStop" Value="false"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border x:Name="rectangle"
SnapsToDevicePixels="True"
Background="{StaticResource WordBlueBrush}"
Opacity="0.3"
CornerRadius="4"
Height="{TemplateBinding Height}"
Width="{TemplateBinding Width}"/>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="rectangle" Property="Opacity" Value="1" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type ScrollBar}">
<Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/>
<Setter Property="Stylus.IsFlicksEnabled" Value="false"/>
<Setter Property="Width" Value="14"/>
<Setter Property="Margin" Value="-14 0 0 0" />
<Setter Property="MinWidth" Value="{Binding Height, RelativeSource={RelativeSource Self}}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ScrollBar}">
<Grid x:Name="Bg" SnapsToDevicePixels="true">
<Border Padding="0 4">
<Track x:Name="PART_Track"
IsDirectionReversed="true"
IsEnabled="{TemplateBinding IsMouseOver}"
Width="8"
HorizontalAlignment="Center"
>
<Track.DecreaseRepeatButton>
<RepeatButton Opacity="0" Command="{x:Static ScrollBar.PageUpCommand}" />
</Track.DecreaseRepeatButton>
<Track.IncreaseRepeatButton>
<RepeatButton Opacity="0" Command="{x:Static ScrollBar.PageDownCommand}" />
</Track.IncreaseRepeatButton>
<Track.Thumb>
<Thumb Style="{StaticResource ScrollBarThumb }" />
</Track.Thumb>
</Track>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ScrollViewer
添加样式。请参阅 ScrollViewer 样式和模板。 - Hamid Reza Mohammadi<RepeatButton Opacity="0" Command="{x:Static ScrollBar.PageDownCommand}" />
更改为<RepeatButton Command="{x:Static ScrollBar.PageDownCommand}" />
并删除了Opacity
(我不知道你为什么要设置它,反正它是你的)。但在ScrollViewer
中,滚动条仅在需要时才会出现。例如当ScrollViewer
的内容不完全可见时,ScrollViewer
会显示滚动条。因此,如果您不需要自定义它,则不需要为您的ScrollViewer
创建样式。 - Hamid Reza Mohammadi