以下是您可能的意思:
速度滑块重复按钮样式:
<Style x:Key="SpeedSliderRepeatButtonStyle" TargetType="{x:Type RepeatButton}">
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="IsTabStop" Value="false"/>
<Setter Property="Focusable" Value="false"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RepeatButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MaxWidth="15"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto" MaxWidth="15"/>
</Grid.ColumnDefinitions>
<Grid x:Name="LeftButton" Grid.Column="0">
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Tag, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=RepeatButton}}"
Value="Left">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<!--Template for left button-->
<Rectangle Fill="Red"/>
</Grid>
<Rectangle Grid.Column="1"
Height="{TemplateBinding FontSize}"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
StrokeThickness="0"
Fill="{TemplateBinding BorderBrush}"
/>
<Grid x:Name="RightColumn" Grid.Column="2">
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Tag, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=RepeatButton}}"
Value="Right">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<!--Template for right button-->
<Rectangle Fill="Red"/>
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
我在这里所做的是将ControlTemplate修改为有3列:左按钮、跟踪栏和右按钮,如果您想使左按钮或右按钮可见,只需设置
RepeatButton
Tag
属性到
Left
或
Right
,其他人留下空的。
和示例水平滑块控制模板:
<ControlTemplate x:Key="HorizontalSlider" TargetType="{x:Type Slider}">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TickBar x:Name="TopTick" Visibility="Collapsed" Fill="LightGray" Placement="Top" SnapsToDevicePixels="True" Height="4" Margin="0,0,0,2" />
<Border x:Name="TrackBackground"
Grid.Row="1"
Margin="10,0"
BorderThickness="0"
BorderBrush="{DynamicResource LabelDisableForegroundColor}"
VerticalAlignment="Center"
Height="1" />
<Track x:Name="PART_Track" Grid.Row="1">
<Track.DecreaseRepeatButton>
<RepeatButton Command="{x:Static Slider.DecreaseLarge}" BorderBrush="Gray" BorderThickness="5" FontSize="5" Style="{StaticResource SpeedSliderRepeatButtonStyle}" />
</Track.DecreaseRepeatButton>
<Track.IncreaseRepeatButton>
<RepeatButton Command="{x:Static Slider.IncreaseLarge}" BorderBrush="Gray" BorderThickness="2" FontSize="2" Tag="Right" Style="{StaticResource SpeedSliderRepeatButtonStyle}"/>
</Track.IncreaseRepeatButton>
<Track.Thumb>
<Thumb x:Name="Thumb" Style="{StaticResource SpeedSliderThumbStyle}"/>
</Track.Thumb>
</Track>
<TickBar x:Name="BottomTick" Grid.Row="2" Visibility="Collapsed" Fill="LightGray" Placement="Bottom" SnapsToDevicePixels="True" Height="4" Margin="0,2,0,0"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="TickPlacement" Value="TopLeft">
<Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="TickPlacement" Value="BottomRight">
<Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="TickPlacement" Value="Both">
<Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
<Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="TrackBackground" Property="BorderBrush" Value="{DynamicResource ListViewItemBorderBrushColor}"/>
</Trigger>
<!--<Trigger Property="IsFocused" Value="True">
<Setter TargetName="TrackBackground" Property="BorderBrush" Value="Orange" />
</Trigger>-->
</ControlTemplate.Triggers>
我设置的重要内容是什么
BorderThicknes
你的
HorizontalSlider
到
0
,因为不再有一个边框,现在您有两个:左边框和右边框。
例如,如果要更改IsEnabled上滑块的颜色,可以这样做:
<RepeatButton Command="{x:Static Slider.IncreaseLarge}" BorderThickness="2" FontSize="2" Tag="Right">
<RepeatButton.Style>
<Style TargetType="RepeatButton" BasedOn="{StaticResource SpeedSliderRepeatButtonStyle}">
<Setter Property="BorderBrush" Value="#FF666666"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="BorderBrush" Value="#FF222222"/>
</Trigger>
</Style.Triggers>
</Style>
</RepeatButton.Style>
</RepeatButton>
你也可以参加
SpeedSliderRepeatButtonStyle